curl

curl

コマンドのオプションが多くて見るのが怖かったcurl
API開発にピッタリのコマンドだったんだ、
もっと早く調べればよかった。。。

いつものように、自分用メモ。

第一歩

Windowsなのでインストール。 (curl - Releases and Downloads)https://curl.haxx.se/download.html
インストールが終わったら実行実行!

サイトにアクセス。

curl http://httpbin.org/get

HTMLが返ってきます。

http://httpbin.org/ さんがcurlの勉強に最適のようです。

HTTPメソッド

GETとかPOSTとかPUTとかDELETEとか。

-X オプションを使う。
(Xは何かな? eXecute?)

>curl -X GET http://httpbin.org/get
{
  "args": {},
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.55.1",
    "X-Amzn-Trace-Id": "Root=1-617aa663-695eff746736e0823a43b1c1"
  },
  "origin": "131.147.82.157",
  "url": "http://httpbin.org/get"
}

データを送りつけよう

JSONを送ってみる。

-dオプションを使う。 (dはDataのdだ。間違いない。)

>curl http://httpbin.org/post -X POST -d "{\"name\": \"masawa\", \"age\": \"123\"}"
{
  "args": {},
  "data": "",
  "files": {},
  "form": {
    "{\"name\": \"masawa\", \"age\": \"123\"}": ""
  },
  "headers": {
    "Accept": "*/*",
    "Content-Length": "32",
    "Content-Type": "application/x-www-form-urlencoded",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.55.1",
    "X-Amzn-Trace-Id": "Root=1-617aaaae-0840d3c147c17c6100b21605"
  },
  "json": null,
  "origin": "131.147.82.157",
  "url": "http://httpbin.org/post"
}

JSONはダブルクォートをバックスラッシュでエスケープするしかないのかなあ。

HTTPヘッダ

-Hを使う。 (HeaderのHに間違いない。)

>curl http://httpbin.org/post -X POST -H "Content-type: application/jason" -d "{\"name\": \"masawa\", \"age\": \"123\"}"
{
  "args": {},
  "data": "{\"name\": \"masawa\", \"age\": \"123\"}",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "*/*",
    "Content-Length": "32",
    "Content-Type": "application/jason",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.55.1",
    "X-Amzn-Trace-Id": "Root=1-617aacd5-2d9d32b865dacb63608c1829"
  },
  "json": {
    "age": "123",
    "name": "masawa"
  },
  "origin": "131.147.82.157",
  "url": "http://httpbin.org/post"
}

Cookie

-bを使う。 (なんで b なんだーー!)

>curl http://httpbin.org/post -X POST -b 'name=masawa'
{
  "args": {},
  "data": "",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "*/*",
    "Cookie": "'name=masawa'",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.55.1",
    "X-Amzn-Trace-Id": "Root=1-617ab33a-1bd8d9c03f31d2b1052aa151"
  },
  "json": null,
  "origin": "131.147.82.157",
  "url": "http://httpbin.org/post"
}

まとめ

curlのオプションは他にも気が遠くなる位ある。

curl -h

でも、今のところは書いてきたようなオプション使えばAPI開発には十分かと思う。