1

ServiceStackを使用してRESTサービスを作成する場合、任意のHTTP動詞をどのように処理しますか?

最も一般的な動詞のメソッドは非常に単純です。たとえば、GETリクエストを処理するには、次のようにします。

public class MyService : RestServiceBase<MyRequest>
{
    public override object OnGet(MyRequest request){
        //do stuff and return HttpResult or object for serialization
    }
}

PUT、POST、DELETE、およびPATCHにも同様のオーバーライドが存在します。

HEADやその他の動詞を使用したい場合はどうすればよいですか?

(ドキュメントと例、およびその他のServiceStackの質問を調べましたが、これを行う正しい方法を示すものは見つかりませんでした。)

4

1 に答える 1

1

ServiceStackのRestServiceBaseクラスには、GET、POST、PUSH、DELETE、およびPATCHのサポートがすでに組み込まれています。したがって、メソッドと同じようにオーバーライドするだけですOnGet()。たとえば、次のコマンドでDELETEリクエストを処理できます。

public override object OnDelete(MyRequest request){
    //do stuff and return HttpResult or object for serialization
}

HEADリクエストの場合、現在ServiceStackサービスでこれを処理できないため、RequestFilterまたはRequestFitler属性のいずれかで処理する必要があります(リクエストを終了するには、必ずhttpResを閉じてください)。

AppHostのEndpointHostConfig.RawHttpHandlers構成に独自のカスタムIHttpHandlerを登録することにより、ServiceStackパイプラインを完全にバイパスすることもできます。

于 2012-08-22T21:13:53.187 に答える