这一小节的代码不是很懂。老师能详细说一下吗

来源:7-9 【应用】输出状态码 422

qq_艾诺_

2020-08-09

.ConfigureApiBehaviorOptions(setupAction =>
            {
                setupAction.InvalidModelStateResponseFactory = context =>
                {
                    ValidationProblemDetails details = new ValidationProblemDetails(context.ModelState)
                    {
                        Type = "",
                        Title = "数据验证失败",
                        Status = StatusCodes.Status422UnprocessableEntity,
                        Detail = "请看详细说明",
                        Instance = context.HttpContext.Request.Path
                    };
                    details.Extensions.Add("traceId", context.HttpContext.TraceIdentifier);
                    return new UnprocessableEntityObjectResult(details){ ContentTypes = { "application/json" }  };
                };
            });
写回答

3回答

阿莱克斯刘

2020-08-12

前两天,慕课网后台似乎出问题了,一直没办法回答问题。所以回复耽搁了好几天,不好意思。

在asp.net中,http 400级别的错误默认的格式如下:

{
    “错误”:{
    “设备编号”: [
       “ DeviceId字段为必填。”
       ]
    },
  “ title”:“发生一个或多个验证错误。”,
   “状态”:400,
   “ traceId”:“ 80000049-0001-fc00-b63f-84710c7967bb”
}

但是,问题是在实际工作中也许需要修改默认的400级别的格式,这时候就需要通过修改ConfigureApiBehaviorOptions来实现自定义的错误输出格式了。比如说,原本数据验证错误默认的输出是400,但是课程为了取得更准确的错误代码,把数据验证错误(也就是context.ModelState
失败的情况)修改成为输出422的格式。

关于你的问题,因为不是特别清楚你不懂的是哪一段代码,所以我也只是讲了一个大概。希望能对你有帮助。这里有一篇文章讲说不定可能帮你:https://www.cnblogs.com/tenghao510/p/11927930.html

如果可以把问题再精确一下,我可以给出更详细的答案。


0
0

阿莱克斯刘

2020-08-11

在asp.net中,http 400级别的错误默认的格式如下:

{
    “错误”:{
    “设备编号”: [
       “ DeviceId字段为必填。”
       ]
    },
  “ title”:“发生一个或多个验证错误。”,
   “状态”:400,
   “ traceId”:“ 80000049-0001-fc00-b63f-84710c7967bb”
}

但是,问题是在实际工作中也许需要修改默认的400级别的格式,这时候就需要通过修改ConfigureApiBehaviorOptions来实现自定义的错误输出格式了。比如说,原本数据验证错误默认的输出是400,但是课程为了取得更准确的错误代码,把数据验证错误(也就是context.ModelState
失败的情况)修改成为输出422的格式。

关于你的问题,因为不是特别清楚你不懂的是哪一段代码,所以我也只是讲了一个大概。希望能对你有帮助。这里有一篇文章讲说不定可能帮你:https://www.cnblogs.com/tenghao510/p/11927930.html

如果可以把问题再精确一下,我可以给出更详细的答案。



0
0

阿莱克斯刘

2020-08-11

在asp.net中,http 400级别的错误默认的格式如下:

{
    “错误”:{
    “设备编号”: [
       “ DeviceId字段为必填。”
       ]
    },
  “ title”:“发生一个或多个验证错误。”,
   “状态”:400,
   “ traceId”:“ 80000049-0001-fc00-b63f-84710c7967bb”
}

但是,问题是在实际工作中也许需要修改默认的400级别的格式,这时候就需要通过修改ConfigureApiBehaviorOptions来实现自定义的错误输出格式了。比如说,原本数据验证错误默认的输出是400,但是课程为了取得更准确的错误代码,把数据验证错误(也就是context.ModelState
失败的情况)修改成为输出422的格式。

关于你的问题,因为不是特别清楚你不懂的是哪一段代码,所以我也只是讲了一个大概。希望能对你有帮助。这里有一篇文章讲说不定可能帮你:https://www.cnblogs.com/tenghao510/p/11927930.html

如果可以把问题再精确一下,我可以给出更详细的答案。



0
0

.Net 开发电商后端API 从0到精通RESTful

. Net 实战+RESTful思想纵深课程,开发优雅RESTful风格API。

978 学习 · 547 问题

查看课程