curlコマンドの使い方

curlコマンドの使い方 ~GET、POST、REST(json)の確認と、windowsでの利用手順

どーもー、某ベンチャー系のIT企業に勤めてる私ですが、今回業務上curlコマンドを利用する事があったので、せっかくなので当記事にまとめておく事にしました。

curlコマンドとは・・・任意のサーバーやWebサイトへhttpリクエストを送って、そのレスポンスをチェックすることができるコマンドになります。

curlコマンドの使い方:Getメソッド-1

(上記は、Googleへcurlコマンド(httpのget)を実行した時の結果です。ちゃんとGoogleからHTMLソースが返ってきてる事が分かりますね)

業務で、Linuxを利用する方や、インフラ・ネットワーク担当者なら、知っていて当然のコマンドですね。

また、http以外にも、メールやFTP、TELNETなど多くのプロトコルに対応しているようです。

一般的には、APIの疎通確認によく使われるコマンド・・・って認識の方がほとんどではないでしょうか。

というわけで今回は、curlコマンドの基本的な使い方:HTTPリクエストのGET、POST、REST(json形式)メソッドの疎通を確認する手順。

また、curlコマンドをwindowsで利用する時の手順について確認しています。

以下、目次。

  1. curlコマンドの基本。GET、POST、REST(json)や、よく利用するオプション
  2. オレオレ証明書(自己SSL証明書)のサーバーへ疎通確認する手順
  3. 日本語の文字化け対策
  4. windowsでcurlコマンド利用する場合。ダウンロード・インストールの手順

curlコマンドの基本的な使い方 GET、POST、REST(json)や、よく利用するオプションまとめ

以下、curlコマンドにてよくチェックするHTTPリエクストの3メソッドになります。

  1. GET
  2. POST
  3. REST(json形式)

これらと共に、よく利用するオプションについても順にまとめていきます。

1、GETメソッド -I、-vオプション

  • 「オプション無し(GETメソッド)」

    以下、コマンド例。

    $ curl https://www.google.co.jp/

    上記は、googleに対してGetメソッドリクエストを送っています。すると以下のように、HTMLレスポンスを返してくれます。

    curlコマンドの使い方:Getメソッド-1

  • 「-Iオプション:レスポンスのHTTPヘッダーの確認」

    以下、コマンド例。

    $ curl https://www.google.co.jp/ -I

    こちらは、以下のようにHTTPレスポンスヘッダーの情報を返してくれます(ボディの情報はなし)

    curlコマンドの使い方:Getメソッドとオプション-2

    (ちなみに-Iオプションは、Getに限らず他のメソッドでも使えます)

  • 「-vオプション:リクエスト&レスポンスのHTTPヘッダー確認や、接続先サーバーのSSL証明書の情報など」

    以下、コマンド例。

    $ curl https://www.google.co.jp/ -v

    -vオプションは、様々な情報を確認することができます(以下参考)

    curlのGetと-vオプション-3

    (ちなみに-vオプションは、Getに限らず他のメソッドでも使えます)

以上、Getメソッドの確認手順(コマンド)でした。

2、POSTメソッド -XPOST、-H、–dataオプション

  • 「-XPOSTオプション:POSTメソッドの指定」

    POSTメソッドの確認をしたい場合は、-XPOSTオプションを記載することでOK!です。

    以下、コマンド例。

    $ curl -XPOST https://www.google.co.jp/

    ちなみに、上記をcurl実行すると、googleではPostメソッドでの通信は許可されていないようで、405エラーのレスポンスが返ってきていますね。

    curlコマンドの使い方:Postメソッド-1

  • 「-Hオプション:リクエストのHTTPヘッダーの設定」

    以下、コマンド例。

    $ curl -XPOST https://aaa.com/index.php -H “Content-Type: application/json” -H “cookie:JSESSIONID=aaa”

    パラメーターとして、HTTPヘッダーの設定をしてPOST送信するときの例です(上記は、2つの設定をしています)

  • 「–dataオプション:リクエストのHTTPボディの設定」

    続いて、HTTPボディの設定もする例です。

    $ curl -XPOST https://aaa.com/index.php -H “Content-Type: application/x-www-form-urlencoded” –data “host=aaa.ne.jp&user=admin&password=passadmin”

    ※「content-type = application/x-www-form-urlencoded」の場合、「–data オプション」でリクエストボディを設定します。

    上記は、フォーム画面の入力値をパラメーター設定値として、Postメソッドでリクエストしている例になります。

    ちなみに、レスポンスボディ情報が無く、実行後に何も表示されない場合もけっっこうあるので、-vオプションを付けると良いでしょう(ヘッダー内容等を確認できる)

以上、Postメソッドの確認手順(コマンド)でした。

3、REST(json形式)メソッド -dオプション

続いて、API通信に一般的に使われているRESTリクエストで、json形式のデータを送る場合。以下コマンド例

$ curl -XPOST https://aaa.com/index.php -H “Content-Type:application/json” -H “x-authkey:aaa” -d “{\”companyId\”:\”abc\”,\”memberId\”:111,\”plan\”:5}”

※-H “x-authkey:aaa” : 個人的に任意に設定したヘッダーになります(無くても良い)

※-d “{“companyId”:”abc”,”memberId”:111,”plan”:5}” だとエラーになります。オブジェクト内の「”」については、「\」を付けてエスケープ(文字列化)してやる必要があります。

※「Content-Type:application/json」で、-d を -data にすると、エラーになります。。。

上記のように、RESTリクエストは、内部的にはPOSTリクエストと変わりないので、「-XPOST」オプションを設定してやります。

また、json形式は「Content-Type:application/json」で指定し、データは-dオプションで指定してやります。

実際に、APIの設定がされているURLに、RESTリクエストを送ってやると、ちゃんとjsonデータがレスポンスされる事が確認できます(以下例)

curlコマンドの使い方:Restメソッド-1

以上、REST(json形式)メソッドについてでした。



というわけで、Get、Post、RestとCurlコマンドを試してきましたが、個人的に気になった注意点について、一応以下にまとめておきます。

  • 「’」だとエラーになる・・・例:「-H ‘Content-Type:application/json’」

  • 「順番は関係ない。(エラーにならない)」

    以下であれば、 -XPOST https://aaa.co.jp/admin を一番最後に持ってきても問題はない。

    curl -XPOST https://aaa.co.jp/admin –data “host=aaa.ne.jp&user=admin&password=passadmin”
  • 「オプションの、-dと-dataは違う扱い・・・上記「REST通信の確認」でエラーとなったため」

以上です。

curlコマンドで、オレオレ証明書(自己SSL証明書)のサーバーへ疎通確認する手順

curlコマンドのオレオレSSL証明書 疎通テスト-1

curlコマンドにて、オレオレSSL証明書のサーバーへリクエストを送ると、上記のようにエラーで返ってきます。

ですが、-kオプションを利用することで、オレオレSSL証明書のURLでも、ちゃんと実行することができます(以下例)

curl -XPOST https://aaa.co.jp/admin -k

日本語の文字化け対策。curlコマンドで日本語に対応する手順

これは、Curlというか、コンソール(コマンドプロンプト等)の問題なんですけど、

レスポンス内容が日本語で文字化けしている事が多々あります。そういう場合は、以下の手順で対応できます。

  1. 以下のコマンドで、文字コードを「UTF-8」に変更する。

    chcp 65001
  2. フォントを日本語対応しているものに変更する。

    ※UTF-8に変更しても文字化けが起こる場合は・・・日本語表示が可能なフォントを選択する必要があります。

    手順:コマンドプロンプト(アイコン)で右クリック→プロパティ>フォント>フォントで「MSゴシック」を選択。

    curlコマンド 日本語の文字化け対応-1

以上です。

windowsでcurlコマンド利用する場合。ダウンロード・インストールの手順

curlコマンドの利用シーンって、基本的にLinuxが多いと思いますが、ここではWindowsで利用できるようにする手順をまとめていきます。

まず、Windowsでは標準で入ってないので、以下からダウンロードしてください。

Curl:Releases and Downloads

(以下参考)

Windowsでcurlコマンドのダウンロード-1

ダウンロードしたzipファイルは解凍して、解答したフォルダを、「C:\Program Files (x86)\」以下に移動してください(場所は任意の場所で良いが)

続いて、配置したフォルダ内の「curl.exe」があるディレクトリパスを確認します。

パス例 : C:\Program Files (x86)\curl-7.61.0-win64-mingw\bin

パスが確認できたら、そのパスをユーザー環境変数の「Path」に追記してください。

Windowsでcurlコマンドのインストール-1

※補足:ユーザー環境変数とシステム環境変数の違いについて

環境変数(Path)の設定は、上記のように2つの指定がありますが、

違いは読み込みの順番で、システム環境変数が読み込まれた後にユーザー環境変数が読み込まれる流れになります。

(仮に、同名のコマンドがあった場合に、意図しない動作原因となってしまうので注意してください)

あとは、システム環境変数の場合は、全ユーザー反映となりますが、ユーザー環境変数は該当ユーザーのみとなります。

(Administrator以外は、システム環境変数を設定できません)

で、環境変数の設定が終わったら、コマンドプロンプト(cmd)にてコマンド実行してみましょう(cmdは一度再起動してください)

curl –help

Windowsでcurlコマンドのインストール-2

上記のように実行されたら、Windowsでもcurlコマンドが使えるようになります。

以上です。

コメントを残す

メールアドレスが公開されることはありません。