用于文件上传的适当 HTTP 状态代码

Appropriate HTTP status code for file upload

我的应用程序允许上传文件。作为限制,我想限制只有特定扩展名的文件(例如 pdf)

因此,如果上传的是 pdf 扩展名的文件,我将 return 200/201 ok 状态代码指示上传成功。

我很困惑,我应该return阅读多个答案后对于非pdf文件我应该怎么做-

  1. 400 - return 400 bad request 的参数是请求因验证而失败。不使用的论点是有时它也表示在发出请求时存在语法错误。
  2. 415 - return 415 Unsupported Media 的参数是文件扩展名不相同。 (将媒体视为文件),但内容类型 (multipart/form-data) 匹配并受​​支持。
  3. 422 - 使用 422 unprocessable entity 的论点是服务器理解内容类型 (multipart/form-data) 但仍然无法处理请求。但另一方面,如果用例只是上传文件,它仍然可以处理。

来自 MDN:

415 Unsupported Media Type

The HTTP 415 Unsupported Media Type client error response code indicates that the server refuses to accept the request because the payload format is in an unsupported format.

The format problem might be due to the request's indicated Content-Type or Content-Encoding, or as a result of inspecting the data directly.

我认为最后一句话明确表示 415 并非严格用于不受支持 Content-Type headers.