新しくなった『Get Contents of URL』を使ってみる(修正)

昨日の記事は、取り上げた例がまずくて読んでもよくわからないものになってしまったので、削除して書き直しました。
一番最初の例の部分だけ変わっています。


先日のアップデートにより、Get Contents of URLの機能が大幅に強化され、幅広いWeb APIの利用が可能になりました。

と言われても、一体何ができるようになったのかよくわからないという人が多いと思いますので、実際の使用例とともにできるだけ簡潔に説明したいと思います。

実際にWeb APIを使いこなせるようになるまでの説明をこの記事に盛り込むことはできませんが、どういうことができるのかという事だけでも知っておくと、のちに検索等で理解を深めようとする際に役に立つかと思います。

Web APIとは

簡単に言うと、Web上で展開されているサービスに対して、要求(やりたい事)を送信し、その要求に対する結果を得る、その一連の操作を簡単に実行できるように用意された仕組み(インターフェース)のことです。

この説明だけではピンとこないと思いますので、実際にWorkflowでWeb APIを利用してみます。

f:id:four_or_three:20161021111344p:plain:w250

郵便番号検索APIというWebサービスのAPIに要求を送り、その結果をxmlファイルで受け取りました。

実行したURLを見てみます。

http://zip.cgis.biz/xml/zip.php?zn=2790031

APIに送った要求文は、?より後ろの部分に書かれています。

zn(郵便番号)が"2700031"に該当する住所を教えてくれ

という内容です。

GET、POST、PUT

先ほどの例のように、要求の内容をURLにくっつけて実行する方法を「GETメソッド」と言います。
Web APIに要求を送るためのメソッドはGETの他にいくつかあり、どの方法が使えるかはAPIの提供側が定めています。

郵便番号検索APIのように、ごく単純なGETリクエストならアップデート前のGet Contents of URLでも実行できましたが、それ以上のことはできませんでした。

今回のアップデートによりPOSTリクエストとPUTリクエストが実行できるようになり、カスタムヘッダーもサポートした事でより幅広いWeb APIに対して要求を送ることができるようになったというわけです。

POSTを用いてヤフオクの入札履歴を得る

この行為自体にはたいした価値はありませんが、POSTメソッドの簡単な実行例として紹介します。

http://page14.auctions.yahoo.co.jp/jp/auction/s520399985

このオークションの全ての入札履歴をAPIを使って取得します。

まずは、「すべての入札履歴」に関するドキュメントを読んでみます。
f:id:four_or_three:20161021115633p:plain
http://developer.yahoo.co.jp/webapi/auctions/auction/v1/bidhistorydetail.html

青線を引いた部分に「GETかPOSTを使用せよ」と書いてあるので、POSTを使用することにします。

Workflowに入力する必要があるのは赤枠で囲った3点。
①Get Contents of URLにInputするURL
②受け取るデータの形式を選択
③対象となるオークションID


次に、別のページの、アプリケーションIDに関する記述を見てみます。
f:id:four_or_three:20161021115651p:plain
http://developer.yahoo.co.jp/appendix/request/rest/post.html

User-AgentヘッダーにアプリケーションIDを埋め込みなさいと書いてあります。

④APIの利用に必須のアプリケーションID

アプリケーションIDとは、APIの使用許可証のようなもので、あらかじめYahoo!デベロッパーネットワークに登録して得ておく必要があります。


これら4点をワークフローに書き込んでいきます。

f:id:four_or_three:20161020234330p:plain:w250

①はそのままですね。

②③をRequest Bodyに書き込みます。
POSTメソッドを使用する時は、要求の内容をこの部分に記述します。

④をヘッダーに書き込みます。

以上で完成。実行してみます。

▼実行の結果、APIから受け取ったファイル
f:id:four_or_three:20161020234352p:plain:w250

この結果は、

関数名(Dictionary)

となっていますので、関数名()を取り外してやるとDictionaryとなり、Get Dictionary Valueアクションを用いて値を取り出すことができるようになります。

スポンサーリンク
スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。