it-swarm.com.ru

Класс System.Net HttpStatusCode не имеет кода 422

Есть ли способ изящно обработать http код состояния 422. Я ищу лучшую практику здесь. Я знаю, что HttpStatusCode является перечислением, так что я попробовал это, 

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

но не позволяет мне сравнивать это. Я делаю что-то здесь не так? 

Каков наилучший способ добавить этот код состояния во время выполнения. 

28
golldy

Я использовал RestSharp, который возвращает код состояния ответа сервера в свойстве типа HttStatusCode, и мне нужно было самому проверить наличие ответа 422, но, конечно, тип не включает его. К счастью, я все еще был в состоянии проверить, используя следующее:

if(response.StatusCode == (HttpStatusCode)422)
{
    // Do my stuff..
}
22
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