PostmanでOracle Cloud REST APIを呼び出そう!

こんにちは。id:k-furusawa--gです。油断をした病欠者が社内で増えてくる時期です。体調管理は念入りに行いたいです。

管理といえばOracle Cloud REST APIのような設定値やヘッダ構成がなかなか分かりにくいものは、cURLなんかでやっていると管理も大変です。
テキストエディタなんかで自己流で管理なんてしていたら「間違ったリクエストでインスタンスが立ち上がってた!」、「停止コマンドが失敗してたのに気づかなかった!」  
なんてことにもなりかねません。怖いですね。
Restlet ClientなんかをChromeにいれてWeb API呼び出しを管理するのもアリですが、数が多くなるとごちゃごちゃになって管理を諦めた人も多いかもしれません(前の現場で私がそれでした)。

そんなとき、REST API呼び出しに便利なPostmanを利用したいと思います!

www.getpostman.com

私も先日メンバーから教えてもらったのですが、とても便利ですね! 
チームでガッツリ使おうとすると有償ですが、WebAPI開発を行っているならぜひ一度触っていただきたいです。

Postmanの導入方法などはたくさんのブログやサイトが紹介していますので、本記事ではインストールが済んだところから始めようと思います。
リクエスト対象は前の記事でご紹介したComputeClassicにしたいと思います。


インストール直後は何もないので、リクエストを管理するコレクションを作ります。

f:id:k-furusawa--g:20181221164512j:plain
コレクションを追加


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

f:id:k-furusawa--g:20181221164738j:plain
COLLECTION作成ダイアログ


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

f:id:k-furusawa--g:20181221164913j:plain
追加直後


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

f:id:k-furusawa--g:20181221165151j:plain
右クリックメニュー


f:id:k-furusawa--g:20181221165646j:plain
リクエスト追加ダイアログ


まず認証を通してCookie取得を行うリクエストを作成します。
Request Nameに適当な名前を入れます。今回はGetCookieにしました。
Request descriptionには入れなくてもいいですが、何のリクエストなのかわかるような文章を入れておくといいです。

終わったらSave to Compute Classicを押します。ちなみにCompute Classicの部分は保存対象のコレクション名が勝手につきます。

f:id:k-furusawa--g:20181221171646j:plain
リクエスト設定初期画面


作成するとリクエスト画面になります。出てこない場合はリストから選択してください。
では早速、リクエストを作っていきます。 まずCookieを得る必要があるのでPOSTします。RESTエンドポイントとインスタンスIDは前回の記事を参考にしてください。

前回の記事:Oracle Cloud Infrastructure REST APIをリクエストしてみた vol.1:Compute Classic編 - Cloudii blog

RESTエンドポイントは上部に入力します。その後ろに認証用のタスクエンドポイント/authenticate/をつけます。

次にリクエストヘッダをつけます。Headerタブを開いてKEYContent-Typeを指定し、VALUEapplication/oracle-compute-v3+jsonを入力します。

f:id:k-furusawa--g:20181225181759j:plain
URIとヘッダ設定


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

f:id:k-furusawa--g:20181225181902j:plain
Body設定


これで準備が整ったので、一旦Sendを押して疎通を確認してください。
正常に終われば下部のCookieタブにValueとしてCookieが入っているはずです。

前回はこのCookieの内容を手動でコピーしてコマンドから変数に入れて使いまわしていたのですが、コピー&ペーストしてコマンド組み立てるの面倒くさいですよね。Potmanではずっと楽な方法で同じことが可能です。

まずは容れ物となる変数を作ります。右上にある歯車のアイコンを押してMANAGE Environmentsダイアログを開いてください。

f:id:k-furusawa--g:20181226154246j:plain
MANAGE Environmentsダイアログを開く


f:id:k-furusawa--g:20181225182946j:plain
MANAGEダイアログ


画像では既に何かありますが初期状態では空です。
Addを押します。別のダイアログに切り替わります。

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

f:id:k-furusawa--g:20181226151253j:plain
VARIABLEを用意


それではこの変数に取得したCookieが入るようにします。
Testsタブを開いて入力欄に以下のコードを入力します。

var data = pm.cookies.get("nimbula");
pm.environment.set("Cookie", data);

pmはpostmanのインスタンスかなにかです。
レスポンスパラメータのCookiesからnimbulaの内容をGetします。
Getした内容をenvironmentのCookieにSetします。

f:id:k-furusawa--g:20181226153930j:plain
Testsタブ


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

f:id:k-furusawa--g:20181226154030j:plain
Managerの中にCookieが!


Cookieが保存されていますね! これで変数にCookieを保持しておくことができます。
ではこれを使ってGETリクエストしてみます!

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

f:id:k-furusawa--g:20181226153511j:plain
GETリクエストを作成


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

f:id:k-furusawa--g:20181226153828j:plain
コンテナ名が取得できる


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

f:id:k-furusawa--g:20181226155734j:plain
中身を展開した状態も見られるよ!


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

一連の流れができたらその動作をRunさせてみます。

f:id:k-furusawa--g:20181226154948j:plain
Test Run!


結果が表示されます!

f:id:k-furusawa--g:20181226155154j:plain
Result!



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