【发布时间】:2022-01-05 17:15:18
【问题描述】:
我进退两难,想听听你的意见。
鉴于以下条件:
- 必须在一个响应中返回所有验证错误(用户输入和业务逻辑验证)
- 失败的用户输入验证(例如姓氏不能为空)应返回
400 BadRequest - 需要唯一属性(例如唯一电话号码)失败的业务逻辑验证应返回
409 Conflict
所以下面的错误对应400 BadRequest
"errors": {
"LastName": [
"Last Name field is required" // User Input Validation => BadRequest
]
}
下面的回复是409 Conflict
"errors" : {
"PhoneNumber": [
"Phone Number is already in use" // Business Logic Validation (Uniqueness) => Conflict
]
}
当有重叠时,响应代码应该是什么?例如:
"errors": {
"LastName": [
"Last Name field is required" // User Input Validation => BadRequest
],
"PhoneNumber": [
"Phone Number is already in use" // Business Logic Validation (Uniqueness) => Conflict
]
}
有优先规则吗?以上应该返回 Conflict 还是 BadRequest?
针对上下文
我正在使用带有 FluentValidation 的 Asp.Net Core。我知道这没什么大不了的,但这只是一个思想实验,而不是合法的 Api。
【问题讨论】:
-
都设置为400错误,问题就解决了。
标签: rest asp.net-core validation api-design fluentvalidation