Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Если более чем одно действие в вашем 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 в исходном коде.