0

次のリクエストボディを受け取る Python/Flask の REST サービスがあるとします。

{'date': '2015-01-01'}

消費者が次の誤ったリクエストを送信します。

{'date': '01/01/2015'}.

API はそれを解析できず、エラーをキャプチャして、ユーザーが間違った形式で日付を送信したことがわかりました。どの HTTP エラー コードで応答しますか?

私はHTTP Code 400を使用しています:

構文が正しくないため、サーバーは要求を理解できませんでした。クライアントは、変更なしでリクエストを繰り返すべきではありません。

私はコンシューマに、400 が表示された場合は、最初に変更する必要があるため、リクエストを再送してはいけないと伝えました。

しかし、私の消費者は、時折、私の Web サーバーが次の HTML で 400 エラーを返すと報告しています。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>The browser (or proxy) sent a request that this server could not understand.</p>

有効なリクエストであっても、ユーザーがこのエラー メッセージを受け取ることがありますが、これはまだわかりません。今、400 の使用が間違っているかどうか疑問に思っています。特に、HTTP コードだけを使用して、再送信する必要があるかどうかを伝えることはできません。

4

1 に答える 1

1

ステータス コードを使用するか400422応答ペイロード内にいくつかの追加のヒントを提供できます。例えば:

{
  "errors": [
    {
      "field": "date",
      "message": "The format of the date must 'MM/dd/yyyy'"
    }
  ]
}

そうすることで、エンド ユーザーはリクエスト内の何が問題なのかを知り、それを更新できます。

お役に立てば幸いです、ティエリー

于 2015-09-21T17:23:51.597 に答える