Jaybanuan's Blog

どうせまた調べるハメになることをメモしていくブログ

ContentType: application/x-www-form-urlencodedの使い道

curlでPOSTのbodyを送るときに、オプションの付与の仕方が何種類かあって、その中でURLエンコードってなんだっけとなって悩んだ。 はるか昔に調べて納得した記憶はあるが、詳細は忘れてしまった。 ズバリの回答が以下にある。

teratail.com

当該部分を引用しておく。

さてではコンテントタイプがapplication/x-www-form-urlencodedのときにURLエンコードが必要となる理由。これはkey=value形式のデータを&区切りで並べる以上、value部に'&'が入っているとvalueの一部なのか区切り文字なのか見分けがつかないからエスケープする必要があるという、HTTPよりは高レベルのアプリケーション上の要求でとなります。

つまり、HTMLのformをうまく取り扱うためのContentTypeということが分かる。 逆に言うと、form以外では使い道はないと思う。

純粋にPOSTでデータを送りたいときは、

  • 単純にbodyにデータを突っ込んでデータに合わせたContentType (JSONならapplication/json)を設定するか、
  • マルチパートを使う

ことになるはず。