#Content-typeでつまずいたのでメモっておく
###1. そもそもContent-typeってなんぞや
- Content-typeとはファイルの種類を表すもの
- HTTPヘッダの項目
- 文字エンコードの指定もできる
###2. Content-typeには種類がたくさんある
-
text/plain
やapplication/json
など - /の前半部分はデータの大まかな種類を表す。
text
ならテキストだし、image
なら画像
application
はその他(何かのデータ) - /の後半部分はより詳しいデータの種類を表す。
text/plain
はテキストファイル,text/csv
ならCSVファイル
###3. つまづいた箇所
- POSTでbodyのデータを送る時にContent-typeに
application/json
かapplication/x-www-form-urulencoded
のどちらで送るべきなのか -
x-www-form-urlencoded
では a=1&b=1 のようなクエリパラメータの形(URLエンコードあり) -
application/json
では {"a":1,"b":2} のようなJSON文字列でデータが送信されます。 - node.jsのExpressを実装する際に、Content-typeを指定せずにPOSTしていたので、値を取得できなかった
###4. どっちでPOSTするほうが良いのか?
- jsの
axios
のデフォルトではContent-type: application/json
で送信するためフロントがjsで実装する今回のケースではこれを使った方が良さそう- ちなみにPHPだと$_POST が Content-type: application/x-www-form-urlencoded
または multipart/form-data を受け取るらしい(参考:https://qiita.com/Kunikata/items/2b410f3cc535e4104906)
- ちなみにPHPだと$_POST が Content-type: application/x-www-form-urlencoded