3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

mockmockAdvent Calendar 2019

Day 23

mockmockのAPIを使ってみる

Posted at

この記事は、mockmockアドベントカレンダー23日目の記事です。

今回はひっそりと存在するAPIを使ってみます。
APIを利用することで、コンソールを介さずにプログラムからmockを操作をすることができます。 スクリプトの作成やCIとの連携などにどうぞ。

API鍵の取得

APIを呼び出す際にはAPI鍵で認証を行います。
プロジェクトのサイドバーの [API鍵設定]からAPI鍵を取得しましょう。

スクリーンショット_2019-11-29_6_02_04.png

AuthorizationヘッダーはAPIリファレンスでAPIを試すときやcurlコマンドなどでHTTPリクエストを送信する際に使用します。

APIリファレンスでAPIを試す

ドキュメントのAPIリファレンスから試すことができます。
https://console.mock-mock.com/docs/features/api_reference

まず、[Authorize]ボタンをクリックして認証を行いましょう。
スクリーンショット_2019-11-29_6_24_28.png

Valueには、Authorizationヘッダーを入力します。
スクリーンショット_2019-11-29_6_26_46.png

mockグループ一覧を取得する

[GET]/mock_groups(mockグループ一覧)の項目を展開し、[Try it out]ボタンをクリックすると、以下のような画面になります。
このAPIはパラメータが無いので、[Execute]ボタンをクリックするだけでAPIが叩かれます。

スクリーンショット 2019-11-29 6.31.57.png

[Execute]ボタンをクリックするとこんな感じ。
Response bodyのjsonの中に、API鍵を発行したプロジェクト内のmockグループの一覧が入ります。
mockグループに設定しているmock定数やmock変数も取得できます。
今回はmock定数serial_numberが設定されています。

mockグループのcodeは後で使うのでコピーしておいてください。

screencapture-localhost-4000-docs-features-api-reference-2019-11-30-08_28_04.png

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": {}
    }
  ]
}

screencapture-localhost-4000-docs-features-api-reference-2019-11-30-08_32_51.png

実行するとこんな感じになります。

screencapture-localhost-4000-docs-features-api-reference-2019-11-30-08_42_39.png

今回は作成だったのでoperationcreateを指定しましたが、更新する場合は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_inoperabletrueだと操作がスキップされ、falseだと失敗が返ります。

targetsには、操作対象のmockIDを入れましょう。

{
  "operation": "launch",
  "options": {
    "ignore_inoperable": true
  },
  "targets": [
    "mk-xxxxxxxxxxxx"
  ]
}

screencapture-localhost-4000-docs-features-api-reference-2019-12-01-05_34_39.png

実行するとこんな感じになります。
job_idは、操作ジョブの状態を確認するのに使うのでコピーしておきましょう。

screencapture-localhost-4000-docs-features-api-reference-2019-12-01-05_39_11.png

今回のは起動を行なったので、operationlaunchでしたが、
他にはreboot(再起動) / terminate(停止) / destroy(削除)があります。

操作ジョブの状態を確認する

[GET] /jobs/{id}(mock操作ジョブ)の項目を展開し、[Try it out]ボタンをクリック、先ほどコピーしたjob_idを入れて実行します。

このように状態が確認できます。
実行中はrunning, 完了したらcompletedが返ります。

スクリーンショット 2019-12-01 5.41.52.png

mockを停止する

起動とほぼ同じです。
operationsはこんな感じ。

{
  "operation": "terminate",
  "options": {
    "ignore_inoperable": true
  },
  "targets": [
    "mk-xxxxxxxxxxxx"
  ]
}

curlコマンドでAPIを叩く

お気づきかと思いますが、APIリファレンスでAPIを叩くと、実行されたcurlコマンドが表示されます。
もちろん、自分でこのcurlコマンドを実行しても同じ結果が返ってきます。これを参考に組み立てて行きましょう。

screencapture-console-mock-mock-docs-features-api-reference-2019-11-29-06_32_26のコピー.png

CIに組み込んでみる

こちらをどうぞ。
https://speakerdeck.com/ktam1219/iotwoserverlessfeng-nitesutositai

このスライドでは、CIの中でテスト環境を構築->mockmockからデータ送信->集計としていますが、
CDまでやっているならもう少し簡単になるかもしれません。

まとめ

まだCLIやSDKはありませんが、APIを使うことでmock操作をプログラムに組み込めます。
夢が広がりますね!

明日は@Y_uuuです。
mockmockを使って簡単なIoTシステムを開発するお話です!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?