使用ASP.NET Core 3.x 构建 RESTful API - 3.3.3 ProblemDetails

当ASP.NET Core 大约在 2.1 版本的时候,它引入了 ProblemDetailsProblemDetails是基于 RFC7807 这个规范,目的是让 HTTP 响应可以携带错误的详细信息,而不是只返回一个错误的状态码。 

 ASP.NET Core 2.2的时候,如果Controller使用了 [ApiController] 这个属性,那么 ProblemDetails 就是客户端错误码的标准响应。 

例如,当返回类型为 IActionResult 的方法返回客户端错误状态码的时候(4xx),同时还会返回一个body,这个 body 就是 ProblemDetails 这个结果里还会包含着一个相关的ID,使用这个ID,就可以把错误和相应的请求日志关联起来。 

 

关于ProblemDetails这个类,可以查看:官方文档。 

 

为了使用ProblemDetails? 

  • 需要为应用程序定义一个通用的错误显示格式; 

  • 很多时候,只返回HTTP状态码并不能表达和传递出足够的信息。 

 

ASP.NET Core 3.x里面,同样也使用了 ProblemDetails。 

看一个返回404的例子: 

这是一个Get请求,但是并没有找到该资源,返回的状态码是404,而响应的body就是 ProblemDetails。 

值得注意的是,这个响应的 Content-Type 是 application/problem+json: 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值