よしかわーるど

プログラミングで世界を変える

curlについて学ぶ

この記事は、名古屋のIT系学生コミュニティ「OthloTech」のアドベントカレンダー

OthloTech Advent Calendar 2018 22日目の記事です。


どうも、よしかわです。

今回は、タイトルどおりcurlコマンドについて触れていきます。

対象読者

  • curl コマンドを学びたい人
  • Web サービスを開発している人
  • Golangでcurlコマンドを試してみたい人

目次

このブログでは以下のことを行います。

参考文献

渋川よしき著『Real World HTTP』(オライリー・ジャパン発行)

山本陽平著『Web を支える技術―― HTTP,URI,HTML,そして REST』(技術評論社発行)

curl とは

curl は、1997 年から開発されているツールです。開発者はスウェーデンのDaniel Stenbergです。

curl は、libcurl と curl の 2 つの構成要素から成り立っています。

  • libcurl はクライアントサイド URL 転送ライブラリです。HTTP だけでなく、FTP や LDAP など、様々な通信方式に対応しています。
  • curl は URL シンタックスを用いてファイルを送信または受信するコマンドラインツールです。

curl のバージョン

僕の Mac のデフォルトがこちらでした。

$ curl --version
curl 7.54.0 (x86_64-apple-darwin18.0) libcurl/7.54.0 LibreSSL/2.6.4 zlib/1.2.11 nghttp2/1.24.1
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz HTTP2 UnixSockets HTTPS-proxy

Homebrew で curl をインストールします。

brew install curl

$ curl --version
curl 7.62.0 (x86_64-apple-darwin18.0.0) libcurl/7.62.0 SecureTransport zlib/1.2.11
Release-Date: 2018-10-31
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets

jqのインストール

jqとは、JSONを整形して表示したり集計したり、値を抜き取ったり出来るJSON用のgrepみたいなコマンドです。

マニュアルはこちらから https://stedolan.github.io/jq/manual/

brew install jq

Dockerのインストール

今回の記事では、curlコマンドを体感していただくために、Dockerを要します。

Dockerをインストールしましょう。

Homebrewでイントールするには以下のコマンドを実行します。

brew cask install docker
open /Applications/Docker.app

APIを叩いてみる

APIを叩くために、まず以下のURLからリポジトリをクローンしてください。

Golangで書かれているため、配置ディレクトリに気をつけてください。

https://github.com/yoshikawataiki/simple-api

git clone git@github.com:yoshikawataiki/simple-api.git

それではワークディレクトリをsimple-apiにして、以下のコマンドを実行します。

Dockerが起動していることが前提ですので、ご了承を。

  1. make docker/start
  2. make api/init
  3. make migrate/init
  4. make migrate/up
  5. make run

ではcurlコマンドでPOSTしてみましょう。

JSONを見やすくするために、| jqをつけています。

curl -X POST -H "Content-Type:application/json" -d '{"name":"yoshikawa","email":"yoshikawa@hoge.com"}' localhost:8080/users | jq

返される値のサンプルは以下です。

{
  "id": 1,
  "name": "yoshikawataiki",
  "email": "yoshi@hoge.com",
  "created_at": "2018-12-22T14:43:51Z",
  "updated_at": "2018-12-22T14:43:51Z"
}

それでは、curlコマンドでGETしてみましょう。

curl localhost:8080/users | jq

返される値のサンプルは以下です。

{
  "id": 1,
  "name": "yoshikawataiki",
  "email": "yoshi@hoge.com",
  "created_at": "2018-12-22T14:43:51Z",
  "updated_at": "2018-12-22T14:43:51Z"
}

終わりに

curlコマンドってすごい簡単にPOSTやGETが出来るんですよ、便利ですね。

こんな雑な記事を最後まで読んでいただきありがとうございました!

23日目はすぱいすさんです!

僕は現在3年生なので、来年卒業論文を書く際にお世話になる記事になること楽しみにしてます!