有没有一种优雅地处理http状态码422的方法。 我在寻找最佳实践。 我知道HttpStatusCode是一个枚举,所以我尝试了这个:
HttpStatusCode Unprocessable = (HttpStatusCode)422;
if (Response == (HttpStatusCode)422)
但是不允许我进行比较。这里我做错了什么吗?
在运行时添加此状态代码的最佳方法是什么。
有没有一种优雅地处理http状态码422的方法。 我在寻找最佳实践。 我知道HttpStatusCode是一个枚举,所以我尝试了这个:
HttpStatusCode Unprocessable = (HttpStatusCode)422;
if (Response == (HttpStatusCode)422)
但是不允许我进行比较。这里我做错了什么吗?
在运行时添加此状态代码的最佳方法是什么。
我一直在使用RestSharp,该库将服务器响应状态码作为HttStatusCode
类型的属性返回,但我需要自己检查是否有422响应,但是这种类型并不包括422。幸运的是,我仍然可以使用以下方法进行测试:
if(response.StatusCode == (HttpStatusCode)422)
{
// Do my stuff..
}
.NET 的旧版本没有这个 HTTP 状态码,但一些新版本有(请参阅微软文档)。
如果您正在使用旧版框架,则可以获取响应并像下面这样检查 StatusCode(就像 Nick 所说的那样):
var httpResponseCode = Response as HttpWebResponse;
if (httpResponseCode.StatusCode == (HttpStatusCode)422)
{
//your code here
}
如果您的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>();
(HttpStatusCode)422
对我来说非常有效。 - CodesInChaos