正确上传不正确的 CSV 文件的 HTTP REST API 状态代码
Posted
技术标签:
【中文标题】正确上传不正确的 CSV 文件的 HTTP REST API 状态代码【英文标题】:Correct HTTP REST API status code for incorrect CSV file upload 【发布时间】:2021-06-14 07:05:57 【问题描述】:我目前正在使用 REST API 端点通过 csv 文件上传批量创建实体。
POST /entity/csv
Content-Type: multipart/form-data
使用表单数据:
key | value |
---|---|
file | binary |
当后台无法解析csv文件时,当前返回400状态码,但客户端发送的请求实际上是正确的。
在我看来,这不是要走的路,它应该返回 200,并提供有关解析问题的其他信息。目前,解析错误在 400 响应正文上。
解析失败时,400状态码有什么情况吗?例如。 “必填字段为空 - 第 43 行”
对此有何共识?
我作为前端开发人员问这个问题,因为我正在编写前端逻辑,用于在 catch 块内向用户显示解析错误,这对我来说似乎很奇怪。
【问题讨论】:
【参考方案1】:对此有何共识?
状态码是“通过网络域传输文档”的元数据。
如果您正在处理类似...的请求
POST /entity/csv HTTP/?.?
Content-Type: text/csv
a,b,c....
那么您要遵循的准则可能就是RFC 4918中的准则
如果正文实际上不是 CSV 文档,则使用 400 Bad Request 如果正文是错误 CSV 文档,则使用 422 Unprocessable Entity。在实践中,虽然 400、422、403 等...之间存在语义差异,但尚不清楚通用客户端可以对这些差异做任何事情。
对于任一代码,响应的主体都是“包含错误解释的表示”。正是在这个地方,您可以记录解析器遇到的问题。
它想要成为 4xx 而不是 2xx 的原因是缓存和cache-invalidation。
【讨论】:
您好,我必须澄清一下:内容类型是多部分/表单数据。请求正文为 file:以上是关于正确上传不正确的 CSV 文件的 HTTP REST API 状态代码的主要内容,如果未能解决你的问题,请参考以下文章
需要保存为CSV格式上传身份号,从Excel复制文本过去,CSV里后几位都是000,怎么办?必须要保存为CSV上传