在我的ASP.NET Core web API中,我使用数据注释进行模型验证。这里有一个类有这些注释:
class CreateUserRequest {
[Required, RegularExpression("[a-zA-Z0-9-_]+")]
public string Name { get; set; }
[Required, StringLength(20, MinimumLength = 6)]
public string Password { get; set; }
}
如果客户端试图创建一个密码太短的用户,我会得到以下响应体:
{
"errors": {
"password":[
"The field password must be a string with a minimum length of 6 and a maximum length of 20."
]
},
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId":"|a301aaae-43dd49e731beb073."
}
我希望从API返回的所有错误都有一个一致的结构,使客户端更容易处理错误。有没有一个类可以用来在其他错误情况下获得相同的结构?
您正在查找ValidationProblemDetails
。
如果你想在响应中返回额外的属性,你可以简单地扩展上面提到的类并添加你需要的任何东西,然后用类的实例调用ControllerBase.ValidationProblem(ValidationProblemDetails)
,而不是使用对BadRequest()
的标准调用。