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