curlコマンドを使った操作

最終更新日: 2023年7月12日
R8 | R9

準備

curl はよく知られているデータ転送用のツールで、コマンドラインで操作します。このページでは curl を使って Wagby の REST API を呼び出す方法を説明します。

準備

公開されているサンプルの「顧客」モデルをインポートし、ビルドします。この顧客モデルは REST API の利用が有効になっています。

JSONデータを用意する

作業フォルダに次のようなJSON形式のファイルを用意しておきます。

search.json

{
  "customername": {
    "content" : "山田"
  }
}

new.json

{
  "customername": {
    "content":"エリック"
  },
  "tel": {
    "content":"03-1111-2222"
  }
}

update.json

{
  "ID":{ 
    "content":"2"
  },
  "customername": {
    "content":"森山"
  },
  "tel": {
    "content":"070-9999-8888"
  }
}

自動ログオンを使う場合

Wagby の自動ログオンを利用する場合はX-Wagby-Authorizationというリクエストヘッダを追加し、さらに値として[ID]:[Password]をBase64でエンコードしたものを送信します。

例えば 'admin:wagby' というID/PWは、Base64で 'YWRtaW46d2FnYnk=' となります。そこで curl のリクエストヘッダに次のように設定します。

curl ... -H "X-Wagby-Authorization: YWRtaW46d2FnYnk="  http://....

顧客の一覧を取得する

curl -X GET -H "X-Wagby-Authorization: YWRtaW46d2FnYnk=" http://localhost:8921/wagby/rest/customer/list
  • リクエストメソッドを明示する場合、-X オプションの後にメソッドを記述します。メソッドは GET,POST,PUT,DELETE などがあります。

顧客を検索する

curl -X POST -d '{"customername":{"content":"山田"}}' -H "X-Wagby-Authorization: YWRtaW46d2FnYnk=" -H "Content-Type: application/json" http://localhost:8921/wagby/rest/customer/list

事前に用意していた JSON 形式のファイルを指定することもできます。

curl -X POST -d @search.json -H "X-Wagby-Authorization: YWRtaW46d2FnYnk=" -H "Content-Type: application/json" http://localhost:8921/wagby/rest/customer/list
  • 複数のリクエストヘッダを付与する場合、-Hを複数回、記述します。
  • POST メソッドでは -d オプションのあとに送信データを記述します。

注意

注意: Windows OS で利用する場合は「事前に用意していたJSON形式ファイルを指定する」方式としてください。

顧客の新規作成

curl -X POST -d '{"customername":{"content":"エリック"},"tel":{"content":"03-1111-2222"}}' -H "X-Wagby-Authorization: YWRtaW46d2FnYnk=" -H "Content-Type: application/json" http://localhost:8921/wagby/rest/customer/new

事前に用意していた JSON 形式のファイルを指定することもできます。

curl -X POST -d @new.json -H "X-Wagby-Authorization: YWRtaW46d2FnYnk=" -H "Content-Type: application/json" http://localhost:8921/wagby/rest/customer/new

注意

注意: Windows OS で利用する場合は「事前に用意していたJSON形式ファイルを指定する」方式としてください。

顧客の更新

curl -X PUT -d '{"customername":{"content":"エリック"},"note":{"content":"テスト"}}' -H "X-Wagby-Authorization: YWRtaW46d2FnYnk=" -H "Content-Type: application/json" http://localhost:8921/wagby/rest/customer/edit/2

事前に用意していた JSON 形式のファイルを指定することもできます。

curl -X PUT -d @update.json -H "X-Wagby-Authorization: YWRtaW46d2FnYnk=" -H "Content-Type: application/json" http://localhost:8921/wagby/rest/customer/edit/2

注意

注意: Windows OS で利用する場合は「事前に用意していたJSON形式ファイルを指定する」方式としてください。

顧客の削除

curl -X DELETE -H "X-Wagby-Authorization: YWRtaW46d2FnYnk=" http://localhost:8921/wagby/rest/customer/edit/11

郵便番号での住所検索

郵便番号から住所を求める設定を有効にした場合に機能します。

ここでは、予め顧客モデルに「郵便番号」と「住所」を追加し,郵便番号と住所を連動させるように設定したとします。

完全一致

curl -X GET -H "X-Wagby-Authorization: YWRtaW46d2FnYnk=" http://localhost:8921/wagby/rest/zipcode/9012227

前方一致

curl -X GET -H "X-Wagby-Authorization: YWRtaW46d2FnYnk=" http://localhost:8921/wagby/rest/zipcode/901

自動ログオンを使わない場合

"X-Wagby-Authorization" 指定ではなく、ログオン時に返戻されるクッキーに含まれる "JSESSIONID" を再利用する方式を説明します。

curlでのクッキーの読み書きは以下のオプションを利用します。

クッキーの新規保存

-c [file name] または --cookie-jar [File name]

クッキーを読込む

-b [file name] または --cookie [file name]

ログオン

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "user=admin&pass=wagby" http://localhost:8921/wagby/rest/session --cookie-jar cookie_file

これで cookie_file というファイルが作成されます。以降、このファイルを再利用して操作を継続します。

なお curl は標準で、次のリクエストヘッダを付与します。
Content-Type: application/x-www-form-urlencoded

そのため、次のように記述することもできます。

curl -X POST -d "user=admin&pass=wagby" http://localhost:8921/wagby/rest/session --cookie-jar cookie_file
それ以外のヘッダを付与したい場合は、個別に明記します。

顧客の一覧を取得する

curl -X GET http://localhost:8921/wagby/rest/customer/list --cookie cookie_file

顧客を検索する

curl -X POST -d @search.json -H "Content-Type: application/json" http://localhost:8921/wagby/rest/customer/list --cookie cookie_file

顧客の新規作成

curl -X POST -d @new.json -H "Content-Type: application/json" http://localhost:8921/wagby/rest/customer/new --cookie cookie_file

顧客の更新

curl -X PUT -d @update.json -H "Content-Type: application/json" http://localhost:8921/wagby/rest/customer/edit/1012 --cookie cookie_file

顧客の削除

curl -X DELETE http://localhost:8921/wagby/rest/customer/edit/1012 --cookie cookie_file

郵便番号での住所検索

curl -X GET http://localhost:8921/wagby/rest/zipcode/9012227 --cookie cookie_file
curl -X GET http://localhost:8921/wagby/rest/zipcode/901 --cookie cookie_file

ログオフ

curl -X DELETE http://localhost:8921/wagby/rest/session --cookie cookie_file
  • ログオフにもクッキーが必要です。
  • ログオフ後は JSESSIONID が無効になるため、以降の REST API 呼び出しは失敗します。(未ログオン状態となります。)

ワンポイント

curl コマンドに-vを付与すると、HTTPステータスを確認することができます。ログオフ後の curl コマンド呼び出しは認証エラー (401) になっていることがわかります。