90450


以下のようなケースの場合、適切なHTTP レスポンスコードの番号をご教授いただけますでしょうか。

レスポンスコードの一覧を覗きましたが、何が適切なのか分かりませんでした。

想定ケース:

  * (POST) REST API 新規登録要求  
リミット発生：要求は正常だが、登録項目数上限の場合


CC BY-SA 4.0
2022-08-09T05:00:28.160
90444
2022-08-10T01:12:00.980
2022-08-09T09:30:15.440
3060
53920
question
http rest
REST API データ登録要求時、リミット発生した場合の適切な HTTP レスポンスコードは？


[`400 Bad
Request`](https://developer.mozilla.org/ja/docs/Web/HTTP/Status/400)が良いと思います。

前提として、クライアントサイドの不備によるエラーなので、[`4xx`](https://www.itmanage.co.jp/column/http-
www-request-response-statuscode/#anc004)を返すべきです。  
登録項目数上限を超えている意味で不正な要求のため、`4xx`および詳細なメッセージを返してPOSTするデータを整形してリトライしてもらう意図を伝えます。

`4xx`の中で`400`以外にふさわしいコードがあればそちらを採用できますが、適していそうな[`413 Payload Too
Large`](https://developer.mozilla.org/ja/docs/Web/HTTP/Status/413)はペイロードに関するエラーなのでベストマッチとは言えないように感じます。

[Microsoft REST API Guidelines](https://github.com/microsoft/api-
guidelines)の[16.2.1. Error response](https://github.com/Microsoft/api-
guidelines/blob/vNext/Guidelines.md#1621-error-response)が良くまとまっていますので引用します。

**引用ここから**

## 16.2.1. Error response

Services MUST provide an error response if a caller requests an unsupported
feature found in the feature allow list. The error response MUST be an HTTP
status code from the 4xx series, indicating that the request cannot be
fulfilled. Unless a more specific error status is appropriate for the given
request, services SHOULD return "400 Bad Request" and an error payload
conforming to the error response guidance provided in the Microsoft REST API
Guidelines. Services SHOULD include enough detail in the response message for
a developer to determine exactly what portion of the request is not supported.

Example:

[code]

    GET https://api.contoso.com/v1.0/people?$orderBy=name HTTP/1.1
    Accept: application/json
    
[/code]

[code]

    HTTP/1.1 400 Bad Request
    Content-Type: application/json
    
    {
      "error": {
        "code": "ErrorUnsupportedOrderBy",
        "message": "Ordering by name is not supported." 
      }
    }
    
[/code]

**引用ここまで**

類例として[AWS S3のエラーコード](https://docs.aws.amazon.com/amazonglacier/latest/dev/api-
error-
responses.html)では、`LimitExceededException`や`InvalidParameterValueException`の場合に`400
Bad Request`を返します。  
なお、この回答は類似質問[Which response code for resources max. limit in REST
API?の回答](https://stackoverflow.com/a/49761341/8248751)をとても参考にしました。


CC BY-SA 4.0
2022-08-09T08:41:24.040
90450
2022-08-09T08:41:24.040
9820
90444
answer