WebAPI验证错误和响应代码



我陷入了进退两难的境地,想听听你的意见。

给定以下条件:

  • 所有验证错误必须在一个响应中返回(用户输入和业务逻辑验证(
  • 失败的用户输入验证(例如,姓氏不得为空(应返回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。因此,更好地对验证异常和业务逻辑异常进行分组和分类。

相关内容

  • 没有找到相关文章

最新更新