web-dev-qa-db-ja.com

System.Net HttpStatusCodeクラスにはコード422がありません

Httpステータスコード422を適切に処理する方法はありますか。ここでベストプラクティスを探しています。私はHttpStatusCodeが列挙型であることを知っているので、私が試したのはこれです、

HttpStatusCode Unprocessable = (HttpStatusCode)422;
if (Response == (HttpStatusCode)422)

しかし、私はそれを比較することはできません。ここで何か間違っていますか?

実行時にこのステータスコードを追加する最良の方法は何ですか。

34
golldy

タイプHttStatusCodeのプロパティでサーバーレスポンスステータスコードを返すRestSharpを使用していました。自分で422レスポンスをチェックする必要がありましたが、もちろんタイプには含まれていません。幸いなことに、私はまだ以下を使用してテストできました。

if(response.StatusCode == (HttpStatusCode)422)
{
    // Do my stuff..
}
25
Nick Gotch

APIで複数のアクションが422を返す可能性がある場合、次のような拡張メソッドでチェックをラップすることを検討できます。

    public static bool IsUnprocessableEntityResponse(this HttpResponseMessage message)
    {
        Requires.NotNull(message, nameof(message));

        return (int) message.StatusCode == StatusCodes.Status422UnprocessableEntity;
    }

クライアントで次のように使用できます:

    if (response.IsUnprocessableEntityResponse())
        return Response.UnprocessableEntity<Resource>();

また、ソースコード内の422マジックナンバーも同時に回避します。

1
aevitas