1

ユーザー、製品などのエンティティに使用される RESTful Web サービスを開発しようとしています。

使用したい新しいユーザーを作成するには

[POST] site/user

REST仕様が言うように

ただし、ユーザーも検索したい。REST仕様によると、

[GET] site/user?name=Shuaib&city=Dhaka

ここまでは順調ですね。しかし、検索パラメーターの一部として大きな JSON データを入力したい場合はどうすればよいでしょうか? その場合に get を使用すると -> URL がぎこちなくなります -> GET 要求の URL サイズに制限があるため、大きな JSON データは URL サイズを超える可能性があります

これらの問題のため、POST を使用してユーザーを検索したいと考えています。

[POST] site/user

これは良い開発プラクティスですか?

4

1 に答える 1

1

いいえ。特に、API を使用する他の開発者に関心がある場合、これは適切な開発アプローチではありません。URI パラメーターで検索できる場合、多くのパラメーターを含む巨大な URI を送信できることに開発者は驚くかもしれませんが、それを理解する上で矛盾や障壁はありません。

一方、GET に標準化された操作を、巨大な URI を必要としないという理由だけで POST を介して行う場合は、それを文書化する必要があります。開発者はあなたの決定に精通している必要があり、これは理解の問題になります。

HTTP 標準は URI サイズに制限を設けていないため、サイズが大きくても API 設計の決定に影響しないことに注意してください。確かに、クライアントとサーバーのほぼ 100% がなんらかの理由で壊れており、URI サイズに制限があります。実際にその制限に達した場合、問題を解決するための RESTful な方法は、サービスに疎結合された何らかの回避策を使用することです。これは、壊れた実装の回避策として明示的に文書化されています。たとえば、 Google Translate APIX-HTTP-Method-Override: GETで行われるように、ヘッダー付きの POST リクエストを GET リクエストに書き換えるプリプロセッサです。

于 2013-11-05T23:33:28.207 に答える