Edited at

APi Gateway Platform Apigee (1) XMLからJSONへのデータ変換

More than 1 year has passed since last update.

APigeeの調査をすることになったのですが、あまり日本語での資料がなかったので、2016年10月時点で調べたことをまとめておきます。

※2016年11月にリニューアルが行われたようですが、画面遷移時にバグるみたいで、いきなりサインアウトするなどします。旧デザインを選択できるので、そちらで操作を行った方が良さそうです。

※本記事においては簡単なAPi Gatewayの作成をしますが、アクティベーションに時間がかかるので、初めての方は先にアカウント作成とアクティベーションをしてから記事を読まれた方が良いかも知れません。


前段の説明


そもそも APi Gatewayとは


  • Web APi:httpの通信を利用してサーバ機能を利用・データをやり取りする

    クライアントはサーバにリクエストし、サーバはクライアントにレスポンスを返す。

例:ブラウザ(クライアント)から、connpassという勉強会管理サイトのAPiエンドポイントにアクセスする。すると、connpass(サーバサイド)はキーワードを含む勉強会一覧データを返す。

   http://connpass.com/api/v1/event/?keyword=python


  • Web APi Gateway:上のクライアント〓サーバの間に入って仲介する

    つまり、クライアントはGatewayにリクエストし、Gatewayはサーバにリクエストをする。サーバはGatewayにレスポンスを返し、Gatewayはクライアントにレスポンスを返す。ということになります。

<気が向いたら図を入れます>


Gatewayを挟むメリット

データ変換、セキュリティ向上、エンドポイントの集約、アクセス分析などなどをGatewayに持たせることができる。

一方で、何でもかんでも無理に集約するとドツボにはまる・・・らしい。


APi Gatewayサービスのリスト

いろんなIT企業がAPi Gatewayサービスを提供しています。

数年前から"APi経済圏"なる単語があったと思うので、現状に至る過程を知りたい方はbingって下さい。

http://www.bing.com/search?q=API%E7%B5%8C%E6%B8%88%E5%9C%8F

「なんでGoogleのAPi Gatewayが"Apigee"なんだ?」とお思いかも知れませんが、2016年9月に買収を発表しました。

https://cloudplatform.googleblog.com/2016/09/Google-to-acquire-apigee.html

本記事ではこのApigeeを少し、ねじってみようと思います。


Apigeeの基本情報


  • Apigee:会社名

  • Apigee Edge:メインサービス名?

他にApigee senseなどのプロダクトがある模様です。。


値段

従量課金制ではないので他社サービスとの比較が難しく、単純にあるがままのプランを抜粋して転記します。

2016年11月時点での情報となりますので、必ず最新情報を参照するようにして下さい!

https://apigee.com/about/pricing/apigee-edge-pricing-features

プラン名
Start
Pro (for small and medium-sized businesses )
Enterprise

Price
$300/月
$2250/月
要問合わせ

API Calls Limit
200万call/月
800万call/月
ーーー

Number of API Proxies
5
25
ーーー

使いたい機能がEnterpriseでしか提供されていない場合は、もはやEnterprise一択ですね。


ApigeeでAPi Gatewayを作ってみる

フリートライアルがある模様です。特にクレジットカード登録など不要でした。


アカウント作成

apigee_n1.png


  • アカウント情報の入力

    Usernameが組織名として使われるので注意。Company Nameは適当なもので大丈夫でした。(というか、古い会社名が入っていたりします。。)

    apigee_n2.png


  • 「Create account」ボタンを押すと登録メールアドレスにアクティベーションURLが送られてくるので、そのURLをクリックしてアカウントをアクティベートしてください。


  • ダッシュボード?的な画面が表示されるので、"Create & Manage APIs " をクリック。

    apigee1.png


  • ここで、 "Free Apigee accounts are limited to one organization on the API Platform." という意味深な文が出てきますが、それ以上の無料プランの詳しい情報は得られません。「Activate」をクリックして下さい。


apigee_n3.png

数分待つことになります。もしくは強制的にトップに飛ばされます


  • サービスのアクティベーションが終わったら、もう一度"Create & Manage APIs "をクリックしてください。サービスのダッシュボードページが開きます。

※わかりにくい表現で恐縮です。まずアカウント自体のアクティベーション、すぐ上のステップでAPi管理機能のアクティベーションをしたことになります。

登録したメアドのメールボックスを確認していただくと、先ほど自分で指定したOrganizationについてのメールが届いていると思うので、内容を確認し、メール内のURLをクリックしてください。


APi Gatewayの作成


  • 旧デザインで試します。サービスのダッシュボードページに表示されてるバーの"Get Started"をクリックして下さい。

    apigee_n5.png


  • "Build a Proxy"ページにて、 most commonが選択されたままの状態で「Next」ボタンをクリック。

    このNextボタン、というかページデザインが変なところで切れており、画面サイズによっては上手く表示されないようです。表示されない場合はスクロールしたり、ブラウザの表示領域をズームアウトしてみてください。

    apigee_n6.png



  • 作成するApiの設定を入力します。ひとまずversionなどのことは置いておきます。


    • Proxy Name: ApigeeのエンドポイントURLを設定します。hogehogeなど入れましょう。Pathも同じです。

    • Existing APi: ターゲットとなるAPiのエンドポイントを指定します。


      • RSSもいけるようです。今回は野球のニュース↓でも見ましょう。Firefox推奨で、ブラウザから開いてみてください。

      • http://rss.rssad.jp/rss/nikkansports/baseball/atom.xml

      • コピーして、Existing APiに貼り付けます。

      • 注意:あくまで、10回程度アクセスするだけです。負荷をかけるようなことをしませんし、してはいけません。





apigee_n7.png


  • アクセスについては制限なし(none)で、CORS headerは今回は取り敢えずチェックいれておきます。

    apigee_n8.png


  • また、Production環境、test環境の両方を作成します。あとは特に詰まらずにAPiを公開出来るかと思います。


  • 上部バー「Dashboard」の隣の「APIs」から、自分が作成したAPiのサマリーページを開くことが出来ます。API Proxiesというリストに表示されるはずです。(何もしなくても、自動遷移するかも?)

    エンドポイントに設定したURLをブラウザ(Firefox推奨)からアクセスしてみて、自分が設定したターゲットの情報が出て来れば作成成功です。表示されているURLをクリックするだけです。

    apigee_n9.png


  • これで、ブラウザ(クライアント)とニュースサイト(サーバ)の間にAPi Gatewayを挟むことが出来ました。

    上部バーの「Analytics」から、APiのアクセス状況などを見ることが出来ます。時間の単位が大きいと、いまアクセスした分が表示されないかも知れません。その場合は、DayをHourに変えたり刻んでみてください。

    右上にあるプルダウンから「test」を選ぶと、test環境のAPiの情報を見ることが出来ます。

    Production環境の場合は「prod」です。

    apigee_n10.png



APi Gatewayでデータ編集


  • APiのサマリーページの上の方に「OVERVIEW / DEVELOP/ TRACE/ PERFORMANCE」というタブがあるので、「DEVELOP」をクリックします。

  • 2つの矢印図がド真ん中にあるのですが、右に向かっているのがクライアントからのリクエストで、左に向かっているのがサーバからのレスポンスを意味しています。

    RSSから返ってきているレスポンスはXML形式なので、これをJSON形式に変更します。左に向かってる矢印の端に「+STEP」と描かれている四角がありますが、それをクリックすると様々な選択肢が出てきます。そこから「XML to JSON」を選択します。画面左上の青い「Save」ボタンを押すと、今やった操作が保存・反映されます。

    apigee_n11.png


  • 改めて、自分が作ったAPiのURLをブラウザ(Firefox推奨)からアクセスしてみてください。XMLだったデータが、JSON形式に変換されているのが分かると思います。


このような形で、簡単にXMLからJSONへの変換をすることが出来ました。

RSSのデータをいじるということで、何となく Yahoo! Pipesを思い出しました…

本記事ではここまで。また最新の情報を調べて色々とねじってみる予定です。