[解決済み] URLクエリパラメータを含むHTTP POST -- 良いアイデアかどうか?
質問
HTTP上で動作するAPIを設計しているのですが、HTTP POSTコマンドを使用して、URLクエリパラメータのみで、リクエストボディを使用しないのは良い方法なのかどうか疑問に思っています。
考慮すること
- 優れたウェブデザインでは、べき等でないアクションは POST で送信される必要があります。これはべき等でないアクションです。
- URLにリクエストパラメーターがあると、このアプリの開発・デバッグがしやすくなります。
- 本APIは、広く利用されることを意図したものではありません。
-
ボディを持たないPOSTリクエストを行うには、もう少し手間がかかるようで、例えば
Content-Length: 0
ヘッダを明示的に追加する必要があります。 - また、ボディを持たないPOSTは、ほとんどの開発者やHTTPフレームワークの期待に少し反しているように思います。
POSTリクエストのパラメータをリクエストボディではなくURLクエリで送信することに、さらなる落とし穴や利点があるのでしょうか?
編集部:検討中の理由は、演算がべき乗でなく、検索以外の副作用があるためです。以下を参照してください。 HTTPの仕様 :
特に、慣習として GET と HEAD メソッドを持つべきではありません(SHOULD NOT)。 以外の動作をさせるという意味を持つ を取得することである。これらのメソッドは は安全であると考えられています。これにより、ユーザー エージェントは、他のメソッドを表現することができます。 POST、PUT、DELETEなど。 特別な方法で、ユーザーに 可能性があることを認識する。 安全でないアクションが要求されています。
...
また、メソッドは は別として、(quot;idempotence")。 エラーまたは期限切れの問題) N > 0 個の同一の は1つのリクエストと同じです。 リクエストに対応します。メソッドGET, HEAD, PUT とDELETEはこの性質を共有しています。また OPTIONS および TRACE メソッドは 副作用がないため は本質的にべき乗である。
解決方法は?
アクションがべき乗でない場合
マスト
使用
POST
. そうでなければ、この先トラブルを招くだけです。
GET
,
PUT
と
DELETE
メソッドは
必須
はべき乗でなければなりません。 もし、クライアントがあらゆる可能性のある
GET
もしこれがクライアントに見える副作用を引き起こすのであれば、何かが間違っています。
を送信することに同意します。
POST
クエリ文字列を含むがボディがないのは奇妙に思えますが、状況によっては適切な場合もあると思います。
URLのクエリ部分は、現在のリクエストの範囲を限定するためのリソースへのコマンドだと考えてください。 一般的に、クエリ文字列は
GET
リクエスト(例えば
?page=1&sort=title
を使用することに意味があるのでしょう。
POST
のように)スコープを制限することもできます。
?action=delete&id=5
).
関連
-
[解決済み】Android 8:クリアテキストのHTTPトラフィックが許可されない
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] HTTP GET(リクエストボディ付き
-
[解決済み] HTTP POSTリクエストでは、どのようにパラメータが送信されるのですか?
-
[解決済み] リソースが既に存在する場合の POST に対する HTTP レスポンスコード
-
[解決済み] PUT、DELETE、HEADなどのメソッドは、ほとんどのウェブブラウザで利用可能ですか?
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み] application/x-www-form-urlencoded or multipart/form-data?
-
[解決済み】REST APIでのPUTメソッドとPATCHメソッドの使い分け 実生活でのシナリオ
-
[解決済み] オブジェクト内のアイテムの合計数を返すための最良のRESTfulメソッドは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] HTTP POSTリクエストでは、どのようにパラメータが送信されるのですか?
-
[解決済み] RESTリソースの命名規則はSingularとPluralのどちらを使用すべきですか?
-
[解決済み] URLクエリパラメータを含むHTTP POST -- 良いアイデアかどうか?
-
[解決済み] cURLでPUTリクエストを行うには?
-
[解決済み] RESTのネストされたリソースのベストプラクティスは何ですか?
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み] REST API 認証
-
[解決済み] オブジェクト内のアイテムの合計数を返すための最良のRESTfulメソッドは何ですか?
-
[解決済み] RESTfulな方法でリソースのサーバーサイドメソッドを呼び出す
-
[解決済み] RESTでトランザクション?