APIGateway
Apigee

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を思い出しました…

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