Twitter APIで遊んでいて、何かおかしなことに気づきました。更新にはPOSTメソッドが必要ですが、クエリ文字列に引数が必要です。(たとえば、ここの開発者コンソールでのステータス/更新呼び出しを参照してください。)
明らかにこれは技術的に可能ですが、なぜ誰かがそのようにするのでしょうか?POST引数は本文に属していませんか?
どちらのオプションも同様に有効です。POSTのURLでパラメーターを使用するための私のお気に入りの例は、マップ上にウェイポイントを設定するアプリケーションです。例えば
POST /map/route/45/waypoints?lat=35&long=74
この場合、パラメーターは、本体で汎用リソースに渡されるパラメーターよりも、場所の識別子としてURIでより意味があります。
RESTアーキテクチャでは、GETとPOSTは単なる動詞であり、リソースを取得または作成/更新するように指示します。URIはリソースの識別を定義します。
例:
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の概念とは異なります。
WEB APIの引数が本文にあるか、クエリがPOSTで送信するContent-Typeヘッダーに依存している場合。
たとえば、Content-Typeの場合:application / json; charset = UTF-8の場合、引数はjsonとして本文に期待されます。Content-Typeの場合:application / x-www-form-urlencoded; charset = UTF-8の場合、引数はクエリ文字列で予期されます