有没有办法优雅地处理http状态代码422。我在这里寻找最佳实践。我知道HttpStatusCode是一个枚举,所以我尝试这样做:
HttpStatusCode Unprocessable = (HttpStatusCode)422;
if (Response == (HttpStatusCode)422)
但不允许我比较它。我是不是做错了什么?
在运行时添加此状态代码的最佳方式是什么?
发布于 2015-09-30 06:54:32
我使用的是RestSharp,它在HttStatusCode
类型的属性中返回服务器响应状态代码,我需要自己检查422响应,但该类型当然不包括它。幸运的是,我仍然能够使用以下代码进行测试:
if(response.StatusCode == (HttpStatusCode)422)
{
// Do my stuff..
}
发布于 2020-06-06 05:31:53
旧版本的.net没有这个statusCode,但一些新版本有(https://docs.microsoft.com/en-us/dotnet/api/system.net.httpstatuscode?view=netcore-3.1)。如果您使用的是较旧的框架,那么您可以获得响应并检查StatusCode,如下所示(就像尼克所说的那样):
var httpResponseCode = Response as HttpWebResponse;
if (httpResponseCode.StatusCode == (HttpStatusCode)422)
{ //your code here }
发布于 2017-06-22 05:44:39
如果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这个神奇的数字。
https://stackoverflow.com/questions/29762372
复制相似问题