[1] [[Webアプリケーション]]では、 [[URL]] の[[クエリー引数]]や[[要求本体]]で
[CODE(MIME)@en[application/x-www-form-urlencoded]] 形式で指定された名前と値の組のことを[DFN[[RUBYB[引数]@en[parameter]]]]と呼ぶことがよくあります。

[2] [[Webサーバー]]が [[URL query]] や[[要求本体]]をどう解釈するかは完全に[[サーバー]]依存です。
[[Webアプリケーションフレームワーク]]などで独自の制約を課していることもありますが、
その制約もそれぞれです。

[3] 多くの場合には、 [[HTML]] からの[[フォームの提出]]を受け取ることを考慮して、
次のように解釈する実装となっているようです。

[FIG(list)[
- [4] [CODE(HTTP)@en[GET]] [[メソッド]]のとき、 [[URL query]] があれば、
[CODE(MIME)@en[application/x-www-form-urlencoded]] の名前と値の組と解釈します。
- [5] [CODE(HTTP)@en[POST]] [[メソッド]]のとき、
-- [6] [CODE(HTTP)@en[Content-Type:]] が [CODE(MIME)@en[application/x-www-form-urlencoded]]
なら、その形式の名前と値の組と解釈します。
-- [7] [CODE(HTTP)@en[Content-Type:]] が [CODE(MIME)@en[multipart/form-data]]
なら、その形式の名前と値または名前とファイル名とファイル内容の組と解釈します。
]FIG]

[13] [[フォームの提出]]だけでなく、[[引数 (OAuth 1.0)]] や[[引数 (OAuth 2.0)]]
もこれと整合性のある動作となっています。

[8] 細かい動作には、色々なバリエーションがあります。例えば、
次のような違いがあります。
[FIG(list)[
- [9] [CODE(HTTP)@en[POST]] でも、 [[URL query]] を[[引数]]として解釈する場合があります。
- [16] [CODE(HTTP)[POST]] で [CODE(HTTP)@en[Content-Type:]] がその他のものであるときに、
[[URL query]] を[[引数]]として解釈する場合があります。
- [10] [CODE(HTTP)[POST]] のとき、 [CODE(HTTP)@en[Content-Type:]]
を無視して [CODE(MIME)@en[application/x-www-form-urlencoded]] として解釈する場合があります。
- [11] [CODE(MIME)@en[application/x-www-form-urlencoded]] の組の区切りの [CODE[&]]
だけでなく、 [CODE[;]] も区切りと解釈する場合があります。
- [12] 名前に重複がある時、どれを選択するのか、複数指定とするのかは、それぞれです。
- [14] [[文字コード]]は、 [[UTF-8]] 決め打ち、その他の[[文字コード]]で決め打ち、
[CODE[_charset_]] 依存、独自の[[文字コード]]指定引数依存など、
いろいろな方法が使われています。
]FIG]

[15] [CODE[GET]] (と [CODE[HEAD]]) と [CODE(HTTP)[POST]] 以外でどう動作するべきかはあまり明確ではありません。
[[フォームの提出]]ではこれら以外の[[要求メソッド]]を使いませんから、基準となる動作がありません。
もっとも、これら以外の[[要求メソッド]]を使う必要がある場面もそう多くなさそうです。

[EG[
[18] 例えば [CODE(HTTP)[PUT]] の[[要求本体]]を本項の[[引数]]として解釈するべきではなさそうです。
]EG]

;; [19] 保守的に、 [CODE(HTTP)@en[POST]] の時だけ[[要求本体]]を[[引数]]として扱い、
それ以外は [[URL query]] のみ[[引数]]とするのが良さそうです。

;; [22] >>20 の [[JSON]] データファイルの [CODE[param_body]] 欄が[[真]]の[[要求メソッド]]が、
[[要求本体]]を[[引数]]として解釈するべきと思われるものです。
[REFS[
- [20] [CITE@en[data-web-defs/http-methods.json at master · manakai/data-web-defs]] ([TIME[2016-06-08 00:17:29 +09:00]]) <https://github.com/manakai/data-web-defs/blob/master/data/http-methods.json>
-- [21] ドキュメント: [CITE@en[data-web-defs/http-methods.txt at master · manakai/data-web-defs]] ([TIME[2016-06-08 00:18:00 +09:00]]) <https://github.com/manakai/data-web-defs/blob/master/doc/http-methods.txt>
]REFS]

[17] [[HTTP]] の[[引数][引数 (HTTP)]]構文や [[URL]] の [CODE(ABNF)@en[param][URL param]]
構文とは無関係です。