Класс System.Net HttpStatusCode не имеет кода 422
Есть способ корректно обрабатывать код статуса 422. Я ищу лучшую практику здесь. Я знаю, что HttpStatusCode - это перечисление, поэтому я попытался это сделать,
HttpStatusCode Unprocessable = (HttpStatusCode)422;
if (Response == (HttpStatusCode)422)
но не позволяет сравнивать. Я здесь что-то не так?
Каков наилучший способ добавить этот код состояния во время выполнения.
Ответы
Ответ 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 в исходном коде.