scaffold で以下の雛形を作成してそこにデータを保存して行く。 何でも屋みたいになってきていて嫌だけど、僕の特技は最短でキャッチアップしてそれっぽいもの作ることなのでまぁ苦ではないんだけど、、、
4月には何をどうするか決めて、それ以外の余計なものをできるだけ減らしていこうと思う。あとは色々な人にあって話して、方向性決めて行こう。
curl -H "Content-Type: application/json" -d '{"user":{"name": "u-kan", "body": "bodybody"}}' http://localhost:3000/users
一応解説
curl
terminalからhttpリクエストを送信する。超便利。
-H オプション
ヘッダを追加できる。これ必須。恐らく、rails内部でのencoding処理とかが少し変わってくるんだと思う。
Content-Type: application/json
実験
# content-typeを指定した場合のserver側で受け取ったhash
{"user"=>{"name"=>"u-kan", "body"=>"bodybody"}}
# 指定しなかった場合
{"{\"user\":{\"name\": \"u-kan\", \"body\": \"bodybody\"}}"=>nil}
content-typeによって処理が違うらしい。ここで疑問。
curl でPOSTした場合の defaultのcontent-typeって何?
以下のコマンドを叩くと、curlコマンドを叩いた時のログを特定のfileに出力できる。 --trace-asciiの他のオプションに、--traceってのもあるんだけどこっちだとbinaryが出力されちゃうので注意。(参考:curlコマンドの使い方)
curl -d '{"user":{"name": "u-kan", "body": "tarou"}}' http://localhost:3000/users --trace-ascii tmp.log
結果の一部はこんな感じ。
tmp.log
Content-Type: application/x-www-form-urlencoded
どうやらx-www-form-urlencodedってのがdefaultっぽい。こいつが何者か調べて見ると、広く使われてるけど結構仕様が固まってないフォーム提出形式の1種らしい。
とりあえず、理由はぐぐってもなかなかでてこないんだけど、忘れずに指定すればおっけー
泣き言なのですが、これの理由がわからないので、誰か教えてくださるととても助かります。。泣
-d オプション
これは送るデータを指定できる。ファイルを送ったりもできるし色々便利っぽいけど、疲れちゃったのでまた今度