curlからwebAPIにPOSTする方法
ずいぶん前に下位10%のダメなエンジニアにだけ解けないパズルを解いた時にまとめたもの。
パラメータを直接指定して送る場合
shell
curl -v http://challenge-your-limits.herokuapp.com/challenge_users \
-X POST \
-d 'name=your-name&email=123456789@example.com&comment=Thanks!' | jq .
json形式で送る場合
shell
curl -v http://challenge-your-limits.herokuapp.com/challenge_users \
-X POST \
-H "Content-Type: application/json" \
-d '{"name":"your-name","email":"123456789@example.com", "comment":"Thanks!"}' | jq .
オプション
-v レスポンスヘッダを標準出力
-X リクエストの種類を指定
-H リクエストにヘッダを追加
-d ボディの追加
\ コマンドラインにおいて複数行入力したい場合に使う
manでdオプションの説明を見てみると
Sends the specified data in a POST request to the HTTP server
とあるので、この場合は本来XオプションでPOSTを指定する必要はないがオプションの紹介のために記載しておく
jq
jqはjsonをパースするためのコマンドで、|(パイプ)で繋げることで標準入力として受け取ったjsonを整形し標準出力に表示する
Appendix
urlにあるファイルをダウンロード
shell
curl -O url