web-dev-qa-db-ja.com

APIにはクエリ文字列にPOST引数が必要ですか?

Twitter APIで遊んでいて、何かおかしなことに気づきました-更新の場合、POSTメソッドが必要ですが、クエリ文字列の引数が必要です(たとえば、ステータス/更新の呼び出しを参照してください)。開発者コンソール ここ 。)

明らかにこれは技術的に可能ですが、なぜ誰かがそのようにするのでしょうか? POST引数は本体に属していませんか?

16
Yarin

どちらのオプションも同様に有効です。 POSTのURLでパラメータを使用するための私のお気に入りの例は、地図上にウェイポイントを設定するアプリケーションです。

     POST /map/route/45/waypoints?lat=35&long=74

この場合、パラメーターは、本体で汎用リソースに渡されるパラメーターよりも、場所の識別子としてURIでより意味があります。

13
Darrel Miller

RESTアーキテクチャでは、GETとPOSTは、リソースを取得または作成/更新するように指示する動詞です。URIはリソースのIDを定義します。

例:

POST /student?name=Tom&age=12 >> It will create a new student with name Tom and age 12.
POST /student/10?name=Tom&age=12 >> It will update student with id 20 with name Tom and age 12.

データを本体のペイロードまたはURIにバインドする必要があるという規則はありません。これは、HTMLフォームデータがPOSTで送信されるWEB1.0の概念とは異なります。

6
shashankaholic