【问题标题】:Correct HTTP REST API status code for incorrect CSV file upload正确上传不正确的 CSV 文件的 HTTP REST API 状态代码
【发布时间】: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 块内向用户显示解析错误,这对我来说似乎很奇怪。

【问题讨论】:

    标签: api rest http-status-codes


    【解决方案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: }。我编辑了原始问题
    猜你喜欢
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 2011-08-31
    • 2020-05-11
    • 2013-12-06
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多