この記事は、mockmockアドベントカレンダー23日目の記事です。
今回はひっそりと存在するAPIを使ってみます。
APIを利用することで、コンソールを介さずにプログラムからmockを操作をすることができます。 スクリプトの作成やCIとの連携などにどうぞ。
API鍵の取得
APIを呼び出す際にはAPI鍵で認証を行います。
プロジェクトのサイドバーの [API鍵設定]からAPI鍵を取得しましょう。
AuthorizationヘッダーはAPIリファレンスでAPIを試すときやcurlコマンドなどでHTTPリクエストを送信する際に使用します。
APIリファレンスでAPIを試す
ドキュメントのAPIリファレンスから試すことができます。
https://console.mock-mock.com/docs/features/api_reference
まず、[Authorize]ボタンをクリックして認証を行いましょう。
Value
には、Authorizationヘッダーを入力します。
mockグループ一覧を取得する
[GET]/mock_groups
(mockグループ一覧)の項目を展開し、[Try it out]ボタンをクリックすると、以下のような画面になります。
このAPIはパラメータが無いので、[Execute]ボタンをクリックするだけでAPIが叩かれます。
[Execute]ボタンをクリックするとこんな感じ。
Response bodyのjsonの中に、API鍵を発行したプロジェクト内のmockグループの一覧が入ります。
mockグループに設定しているmock定数やmock変数も取得できます。
今回はmock定数serial_number
が設定されています。
mockグループのcode
は後で使うのでコピーしておいてください。
mockを作成する
次はAPIを使ってmockを作成してみましょう。
[POST]/mock_groups/{mock_group_id}/mocks
(mock一括編集)の項目を展開し、先ほどと同じように[Try it out]ボタンをクリックしましょう。
今回はパラメーターが2つあります。
mock_group_id
は先ほどコピーしたmockグループのcode
の値で、
operations
は、mockの編集操作を指定するjsonです。
operations
には以下のようなjsonを指定します。
今回のケースではmock定数フィールドserial_number
を指定しているため、consts
に値を入れていきます。
{
"targets": [
{
"operation": "create",
"consts": {
"serial_number": "ac00001"
},
"vars": {}
}
]
}
実行するとこんな感じになります。
今回は作成だったのでoperation
にcreate
を指定しましたが、更新する場合はupdate
を指定します。
その場合は、mockを指定するcode
のキーも必要です。
{
"targets": [
{
"operation": "create",
"code": "mk-xxxxxxxxxxxx"
"consts": {
"serial_number": "ac00001_mod"
},
"vars": {}
}
]
}
mockを起動する
作成したmockを起動してみます。
[POST]/mock_groups/{mock_group_id}/operate
(mock操作)の項目を展開し、[Try it out]ボタンをクリックします。
mock_group_id
は先ほどと同様、mockグループのcode
の値で、
operations
は、mockの操作を指定するjsonです。
ignore_inoperable
は、mockに指定した操作ができない場合に無視するかどうかの設定です。
例えば、起動中のmockに起動操作をするようなケースです。
その場合、ignore_inoperable
をtrue
だと操作がスキップされ、false
だと失敗が返ります。
targets
には、操作対象のmockIDを入れましょう。
{
"operation": "launch",
"options": {
"ignore_inoperable": true
},
"targets": [
"mk-xxxxxxxxxxxx"
]
}
実行するとこんな感じになります。
job_id
は、操作ジョブの状態を確認するのに使うのでコピーしておきましょう。
今回のは起動を行なったので、operation
はlaunch
でしたが、
他にはreboot
(再起動) / terminate
(停止) / destroy
(削除)があります。
操作ジョブの状態を確認する
[GET] /jobs/{id}
(mock操作ジョブ)の項目を展開し、[Try it out]ボタンをクリック、先ほどコピーしたjob_id
を入れて実行します。
このように状態が確認できます。
実行中はrunning
, 完了したらcompleted
が返ります。
mockを停止する
起動とほぼ同じです。
operations
はこんな感じ。
{
"operation": "terminate",
"options": {
"ignore_inoperable": true
},
"targets": [
"mk-xxxxxxxxxxxx"
]
}
curlコマンドでAPIを叩く
お気づきかと思いますが、APIリファレンスでAPIを叩くと、実行されたcurlコマンドが表示されます。
もちろん、自分でこのcurlコマンドを実行しても同じ結果が返ってきます。これを参考に組み立てて行きましょう。
CIに組み込んでみる
こちらをどうぞ。
https://speakerdeck.com/ktam1219/iotwoserverlessfeng-nitesutositai
このスライドでは、CIの中でテスト環境を構築->mockmockからデータ送信->集計としていますが、
CDまでやっているならもう少し簡単になるかもしれません。
まとめ
まだCLIやSDKはありませんが、APIを使うことでmock操作をプログラムに組み込めます。
夢が広がりますね!
明日は@Y_uuuです。
mockmockを使って簡単なIoTシステムを開発するお話です!