5

これは非常に些細な質問だと思います。AJAX クエリに応答する PHP スクリプトを作成しています。クエリには、PHP スクリプトが処理して応答を返す XML データを含める必要があります。私が考慮したい2つのエラーケースがあります:

  1. リクエストに POST データがありません。また
  2. XML 内の不正なデータ (XML が無効または整形式であるか、一部のスキーマ チェックに失敗した)

そのような場合、4xx 応答コードを返す必要があると思います。400よりも適切なものはありますか?

詳細

問題をさらに説明すると、クライアント Javascript アプリケーションは、教育目的のダイアグラム エディターです。ユーザーは、特定の状況を正しくモデル化する図を作成する必要があります。その後、学生はダイアグラムを送信できます。これにより、ダイアグラムの XML シリアル化がサーバーへの AJAX 呼び出しを介して POST されます。PHP スクリプトはダイアグラムの XML を分析し、AJAX 応答としてクライアントに送信される XML レポートを作成します。最初に説明した 2 つの状況 (XML POST データがない、またはその中に無効な XML がある) は、クライアントから要求されたときに発生するべきではありませんが、これらの状況を正しく把握して対処することが賢明だと思います。したがって、4xx 応答コードが適切であるという私の信念です。XML レポート構造はこれらの状況に対応しておらず、空のレポートは完全な図になり、明らかに適切ではありません。

4

2 に答える 2

6

TCP/IP ガイドのコードの意味に基づくと、400 が最良の選択のようです。あなたの例を満たすものは何もないようです。

于 2012-02-20T03:15:08.013 に答える
1

あなたが言及した2つのエラーケースは、実際には異なるHTTPステータスコードで提供されると思います. W3C のステータス コード定義から:

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

409 Conflict - リソースの現在の状態と競合するため、リクエストを完了できませんでした.. (サードパーティの) リクエストの場合、サーバーは 409 レスポンスを使用して、リクエストを完了できないことを示す場合があります....

したがって、400 は、構文の問題が原因でリクエストの本文を解析することさえできない場合に使用されます。対照的に、409 は、リクエストの本文が解析され、サーバーがリクエストを正しく理解しているが、ビジネス ルールのためにそれを実行することを拒否している場合のようです。

スキーマの検証に失敗したり、XML 構文が正しくない場合は、他の投稿者に同意します。400 が適切です。しかし、あなたが言う有効な図であるが他の理由で受け入れられないPOSTデータがない場合、409がより適切に思えます。

于 2012-03-12T23:03:04.477 に答える