【发布时间】:2019-05-02 21:52:55
【问题描述】:
我用 .net 核心数据注释修饰了一个 POCO。
public class Foo
{
[Required]
[StringLength(100, MinimumLength = 1)]
public String Name { get;set;}
}
当我使用无效数据调用 API 控制器时,这些数据验证规则开始返回 HTTP 400。有效负载看起来类似于:
{
"name": [
"The Name field is required."
]
}
我的两个问题:
我看到很多文档提到 ModeState.IsValid,在我的例子中,控制器甚至没有被输入,也没有添加任何自定义操作过滤器。
是否可以控制/配置负载响应?
我想返回更多结构化响应
{
"reason":"Invalid request",
"errorCode":"BadFooDetails",
"data" : {
"name": [
"The Name field is required." ]
}
}
这样做的主要原因是要有一个一致的结构化 ApiError 响应负载。
【问题讨论】:
-
只是为了详细说明,除了输入验证之外,我们还有其他处理,它使用这个“外部构造”来提供关于错误状态的一致信封。在 data 属性中传输详细信息。唯一的建议是使用中间件来重写响应,但有点感觉我们缺少一些控制。
标签: .net-core data-annotations