こんにちは。id:k-furusawa--gです。油断をした病欠者が社内で増えてくる時期です。体調管理は念入りに行いたいです。
管理といえばOracle Cloud REST APIのような設定値やヘッダ構成がなかなか分かりにくいものは、cURLなんかでやっていると管理も大変です。
テキストエディタなんかで自己流で管理なんてしていたら「間違ったリクエストでインスタンスが立ち上がってた!」、「停止コマンドが失敗してたのに気づかなかった!」
なんてことにもなりかねません。怖いですね。
Restlet ClientなんかをChromeにいれてWeb API呼び出しを管理するのもアリですが、数が多くなるとごちゃごちゃになって管理を諦めた人も多いかもしれません(前の現場で私がそれでした)。
そんなとき、REST API呼び出しに便利なPostmanを利用したいと思います!
私も先日メンバーから教えてもらったのですが、とても便利ですね!
チームでガッツリ使おうとすると有償ですが、WebAPI開発を行っているならぜひ一度触っていただきたいです。
Postmanの導入方法などはたくさんのブログやサイトが紹介していますので、本記事ではインストールが済んだところから始めようと思います。
リクエスト対象は前の記事でご紹介したComputeClassicにしたいと思います。
インストール直後は何もないので、リクエストを管理するコレクションを作ります。

Collectionsタブにあるアイコンをクリックしてください。COLLECTION作成ダイアログが開きます。

今回はとりあえずNameだけ入れます。ComputeClassicと入れます。Createを押します。

作ったらコレクション追加されるので、これを右クリックしてAdd Request
を押しダイアログを開いてリクエストを追加します。


まず認証を通してCookie取得を行うリクエストを作成します。
Request Name
に適当な名前を入れます。今回はGetCookieにしました。
Request description
には入れなくてもいいですが、何のリクエストなのかわかるような文章を入れておくといいです。
終わったらSave to Compute Classic
を押します。ちなみにCompute Classicの部分は保存対象のコレクション名が勝手につきます。

作成するとリクエスト画面になります。出てこない場合はリストから選択してください。
では早速、リクエストを作っていきます。 まずCookieを得る必要があるのでPOSTします。RESTエンドポイントとインスタンスIDは前回の記事を参考にしてください。
前回の記事:Oracle Cloud Infrastructure REST APIをリクエストしてみた vol.1:Compute Classic編 - Cloudii blog
RESTエンドポイントは上部に入力します。その後ろに認証用のタスクエンドポイント/authenticate/
をつけます。
次にリクエストヘッダをつけます。Header
タブを開いてKEY
にContent-Type
を指定し、VALUE
にapplication/oracle-compute-v3+json
を入力します。

次にBody
タブを開いてraw
を選択します。
プルダウンメニューが出てくるのでJSON(application/json)
を選択します。
入力領域に前回と同様、JSON形式でユーザ名とパスワードを設定してください。

これで準備が整ったので、一旦Send
を押して疎通を確認してください。
正常に終われば下部のCookie
タブにValue
としてCookieが入っているはずです。
前回はこのCookieの内容を手動でコピーしてコマンドから変数に入れて使いまわしていたのですが、コピー&ペーストしてコマンド組み立てるの面倒くさいですよね。Potmanではずっと楽な方法で同じことが可能です。
まずは容れ物となる変数を作ります。右上にある歯車のアイコンを押してMANAGE Environmentsダイアログを開いてください。


画像では既に何かありますが初期状態では空です。
Add
を押します。別のダイアログに切り替わります。
変数をここで作成できます。
Add Environment
には今回はManager
と入れます。
次にVARIABLE
にCookie
と入力します。
今回はレスポンスから値を得るので、値は入力しなくて構いません。
このままAdd
を押します。
ダイアログが閉じると右上のボックスにデフォルトで先ほど作ったManager
が選ばれていると思います。
これで変数の準備はOKです。

それではこの変数に取得したCookieが入るようにします。
Tests
タブを開いて入力欄に以下のコードを入力します。
var data = pm.cookies.get("nimbula"); pm.environment.set("Cookie", data);
pm
はpostmanのインスタンスかなにかです。
レスポンスパラメータのCookies
からnimbula
の内容をGetします。
Getした内容をenvironmentのCookie
にSetします。

これでSend
を押して正常終了を確認します。
確認出来たらMANAGE Environmentダイアログを開いた歯車アイコンの隣にある目玉のアイコンを押します。
Managerの中身が表示されると思います。

Cookieが保存されていますね! これで変数にCookieを保持しておくことができます。
ではこれを使ってGETリクエストしてみます!
同じ要領でリクエストを作成し、GETにしてURIを入力します。
今回は簡単に/instance/
を指定します。右上のボックスでManager
を選択されていることを確認してください。
Headers
にCookie
を追加し、VALUE
に{{Cookie}}
と入れます。変数の中身を使う場合は{{}}
で囲みます。

ではSend
を押します。コンテナ名が返ってきますね! 成功です。

Send
の下あたりにあるcode
を押すと、変数の中身を展開した状態のリクエスト内容が見られます。
タブをcURLにするとcurlコマンドで成形もしてくれるので、変数を駆使しすぎて中身がよくわからなくなった時に便利です。

MANAGE Environmentに変数を追加していけば、この得られたコンテナ名も保持することができ、さらにその下のサブコンテナ名なども保持していくことができます。
活用できれば、「認証=>ストレージ作成=>ストレージ取得=>sshkey作成=>sshkey取得=>インスタンス作成=>インスタンス起動=>インスタンス停止」の流れを作りテストすることができます。
一連の流れができたらその動作をRunさせてみます。

結果が表示されます!

このほかにも、チームでShareしたりWEBドキュメントのようなものを作ってそれを展開したりいろいろできるようです。
最初にも書きましたが全部の機能を使おうとすると有償となりますが、無料で一通りの機能は触ることができるので、皆さんも一度試してみてください。