この記事は、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システムを開発するお話です!





