RESTリクエストを検証する方法は?
-
06-07-2019 - |
質問
このサービスの提供:
POST /hotel HTTP/1.1
<hotel>
<a>aaa</a>
<b>bbb</b>
<c>ccc</c>
</hotel>
HTTP/1.1 201 CREATED
Location: /hotel/123
サーバーでリクエストを処理するとき、リクエストの hotel
XMLをDTDに対して検証します。
質問は、RESTのベストプラクティスとして、クライアントはリクエストでDTDを参照する必要がありますか(通常、DTDに基づいてXMLドキュメントを作成する場合)。または、これは必要ありませんか? DTDはAPIドキュメントで説明されるため、クライアントサービスの作成者はDTD検証の詳細を認識できます。
解決
さて、リクエスト本文がDTDチェックに失敗した場合、確かに 400 Bad Request
を吐き出すことはできますが、DTD参照が存在する必要はありません。省略することを許可し、存在する場合は使用する必要がありますが、間違ったDTDを指定している場合はリクエストも失敗します。もちろん、エラーメッセージは、予想されるDTDを示す必要があります。
DTDが省略されている場合は、厳密な適合性チェックをスキップすることを検討することをお勧めします。これは、ソフトウェアのセットアップ時に人々が望んでいる種類ですが、パフォーマンス上の理由から、すべてが機能していることを知る。
他のヒント
私の知る限り、RESTにはPOST本体の内容について何も言うことがありません。
もちろん、サーバーでXMLを検証する必要があるため、時間と帯域幅を節約するために、クライアントがXMLをDTDに対して検証してから送信することをお勧めします。ただし、強制する方法は本当にありません。
サービスライターとしてのあなたの責任は、DTDを参照するかどうかにかかわらず、リクエストを受け入れることですが、それは単なる意見です。
所属していません StackOverflow