【发布时间】:2022-09-24 05:22:33
【问题描述】:
我正在学习使用问题详细信息中间件找到here
我的设置一切正常,但我很好奇为什么它映射验证错误与默认状态代码不同。
为了更好地解释,在所有者提供的示例 repo 中尝试以下操作:
致电https://localhost:54547/mvc/modelstate
回复\"status\":422
在项目的Program.cs中,注释掉MVC覆盖AddProblemDetailsConventions(第46行)并再次调用
回复\"status\":400
400 是当您将ApiController 属性添加到控制器时自动插入的验证错误的默认状态代码。
之前和店主here讨论过,建议拨打AddProblemDetailsConventions
如果您想从您的 API(由中间件生成)获得 100% 一致的错误响应。
我了解中间件是控制响应错误消息的“格式”跟随RFC7870,但为什么要更改此示例案例的错误代码? 422 比 400 更具体/更好的做法吗?
我试图寻找更多细节,但找不到任何细节。就像更改了其他映射一样,或者是否有一种方法可以为默认验证错误配置中间件映射(因为在我们的项目中,我们已经有测试套件断言 400 用于验证场景)。
-
错误 400 表示请求的格式不正确,就像正文或标头有问题一样。错误 422 表示查询有问题。 HTML结构很好,只是查询里面的参数有问题。
标签: c# .net asp.net-mvc api middleware