3

このリファレンスの使用 - https://github.com/ServiceStack/ServiceStack/wiki/Request-and-response-filters

現在、私の現在の実装では、着信 HEAD リクエストはすべて 404 ステータスコードを受け取ります。HEAD リクエストのステータス コードとして 200 を返したいので、クライアントは実際の出力に対してさらに GET リクエストを行います。

明らかに、AppHost がまだ 404 を返しているため、以下のコードは間違っています。修正してください。

     this.RequestFilters.Add((httpReq, httpResp, requestDto) =>
        {

        });

        this.ResponseFilters.Add((req, res, dto) =>
        {
            if (req.HttpMethod == "HEAD") res.StatusCode = 200;
        });

質問 2: AppHost で定義されたすべてのルートに対して、この単一のコード実装で十分ですか。

Routes.Add<dto1>("/GetMethod1", "GET");
Routes.Add<dto1>("/GetMethod1/Id/{ID}", "GET");
Routes.Add<dto2>("/GetMethod2", "GET");
Routes.Add<dto2>("/GetMethod2/Id/{ID}", "GET");

ありがとう

4

1 に答える 1

4

古いバージョンの ServiceStack を使用しているようですので、まずは最新バージョンにアップグレードすることをお勧めします。

それ以外では、HEADまたはその他の一般的でない HTTP メソッド リクエストを処理する理想的な方法は、ServiceStack の新しくより柔軟な APIを使用することです。

public void Head(GetMethod request) {
    base.Response.StatusCode = 200;
}

しかし、実装が存在するだけで十分なので、空の本体を持つことができます。つまり、200StatusCode の設定は、デフォルトのステータス コードであるため冗長です。

フィルターを使用して一般的に処理する場合は、リクエスト パイプラインのできるだけ早い段階で処理する必要があります。ユーザー定義のイベントとフィルターが実行される順序については、ServiceStack の操作の順序を参照してください。

于 2012-11-30T17:46:12.720 に答える