APIによるビジネス化 - apigeeを使ってみる

APIによるビジネス化を検討します
[apigee](https://apigee.com/)を使ってみます

#0. apigeeにサインアップします
- [apigeeのサイト](https://apigee.com/)へアクセスしてフリートライアルのユーザーIDを取得します

<img width="1680" alt="スクリーンショット 2017-08-30 7.43.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/125842/77a96654-bd94-ea85-833f-a4d4c193c365.png">

- メールが届くのでその中のリンクをクリックするとactivateされます
- 自分用の組織（「ユーザー名-trial」などの名称になります）が作成されるまで少し時間がかかります（３０分程度など）
- 組織が作成されるとApigeeのログイン画面左上の自分のユーザーIDのプルダウンで自分用の組織（「xxxxx-trial」など）が選択可能になります

#1. チュートリアル１：OpenAPIの仕様の作成
- [apigee - Get Started](https://docs-new.apigee.com/get-started)に従って進めていきます
- [Tutorial: Create an OpenAPI Specification](https://docs-new.apigee.com/tutorial-create-spec)でOpenAPIの仕様を作成してみます（実際のAPI作成は行われません）

<img width="1680" alt="スクリーンショット 2017-08-30 7.44.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/125842/0f8ad327-ba2d-9aa5-6512-f5dd05fbc246.png">


#2. チュートリアル2：APIの作成
- [apigee - Get Started](https://docs-new.apigee.com/get-started)の２つめのチュートリアルです
- [Tutorial: Create an API proxy from a specification](https://docs-new.apigee.com/tutorial-api-proxy-from-spec)でAPIを作成してみます
- Apigeeが提供するmocktargetサービス（「Hello, Guest」を返します）を使用します 
- 画面右上の「+Spec」プルダウンメニューから「Import URL」を選択します
<img width="256" alt="スクリーンショット 2017-08-29 13.01.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/125842/f221c487-d0ed-b3f7-376e-9c8ed222044d.png">

- 「Import Name」に「mocktarget」、「Import URL」に「https://raw.githubusercontent.com/apigee/api-platform-samples/master/default-proxies/helloworld/openapi/mocktarget.yaml」 を指定し、Importを押します
- Importされたサービスを表示してみます

<img width="1388" alt="スクリーンショット 2017-08-29 13.04.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/125842/2a9450da-e122-6a82-9eab-072d0c8da98f.png">

- 次にこのサービスへアクセスする「APIプロキシー」を作っていきます
- Develop⇢Specsを選択し、作成された「mocktarget」 サービスをメニュー表示した状態で、右端の「More」メニューから「Generate API Proxy」を選択します
- 「Details」画面はそのまま「Next」、次の「Flows」画面はすべての項目が選択されている（　デフォルト）ことを確認し「Next」、「Security」画面では「Pass through(none）」を選択して「Next」、「Virtual Host」画面ではすべて選択されていることを確認して「Next」、「Build」画面は「Test」が選択されている（デフォルト）ことを確認し、画面右下の「Build and Deploy」ボタンを押してAPIプロキシーを生成します
- 画面が「Generated Proxy」、「Uploaded proxy」、「Deployed to test」と完了（緑色に変化）し、「View mocktarget-．．．」メニューが表示されたら作成されたAPIプロキシーを開いてみます
- 画面中央に作成されたAPIプロキシーのURLが表示されています
- 作成されたAPIプロキシーを確認するため、`curl http://<org_name>-test.apigee.net/mock-target-api`もしくはブラウザで同URLをアクセスしてみます
- 設定がうまくいっていれば、` Hello,Guest!`が返されます
- 同様に、`curl http://<org_name>-test.apigee.net/mock-target-api/xml`もしくはブラウザで同URLをアクセスします
- 設定がうまくいっていれば、`{"root":{"city":"San Jose","firstName":"John","lastName":"Doe","state":"CA"}}`などJSON形式で結果が返されます

#3. チュートリアル3：APIの公開
- [apigee - Get Started](https://docs-new.apigee.com/get-started)の３つめのチュートリアルです
- [Tutorial: Publish your API](https://docs-new.apigee.com/tutorial-publish-apis)でAPIの公開を試してみます
- 画面右上の「+Spec」プルダウンメニューから「Import URL」を選択します
<img width="256" alt="スクリーンショット 2017-08-29 13.01.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/125842/f221c487-d0ed-b3f7-376e-9c8ed222044d.png">

- 「Import Name」に「foodcarts」、「Import URL」に「https://raw.githubusercontent.com/apigee/streetcarts/master/streetcarts/specs/openapi/foodcarts.yaml」 を指定し、Importを押します
- Importされたサービスを表示してみます


<img width="1665" alt="スクリーンショット 2017-08-29 14.07.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/125842/7c36043f-feb7-ce59-b7ec-204d6a5d1b39.png">

- 次に前項と同様にこのサービスへアクセスする「APIプロキシー」を作っていきます
- Develop⇢Specsを選択し、作成された「footcarts」 サービスをメニュー表示した状態で、右端の「More」メニューから「Generate API Proxy」を選択します
- 「Details」画面はそのまま「Next」、次の「Flows」画面はすべての項目が選択されている（　デフォルト）ことを確認し「Next」、「Security」画面では「Pass through(none）」を選択して「Next」、「Virtual Host」画面ではすべて選択されていることを確認して「Next」、「Build」画面は「Test」が選択されている（デフォルト）ことを確認し、画面右下の「Build and Deploy」ボタンを押してAPIプロキシーを生成します
- 画面が「Generated Proxy」、「Uploaded proxy」、「Deployed to test」と完了（緑色に変化）し、「View foodcarts-．．．」メニューが表示されたら作成されたAPIプロキシーを開いてみます
- 画面中央に作成されたAPIプロキシーのURLが表示されています
- 次にこのAPIを公開していきます
- Apigeeのコンソールから「Publish」→「API Products」を選択します
- 画面右上の「＋API Product」を押し、「Product Detail」画面で、「Name」欄に「StreetCarts」、「Display Name」欄に「StreetCarts」、「Description」欄に「StreetCarts API」、「Environment」は「Test」を選択し、「Access」は「Public」を選択し、「Key Approval Type」は「Automatic」（デフォルト）が選択されていることを確認し、「Quota」と「Allowed OAuth Scope」は空欄（ブランク）のままとします。
- 「Resource」セクションの「API Proxy」プルダウンメニューを開き、「Food-Carts−API」を選択し、「Revision」は「１」、「Resource Path　」は「/」を選択します。「Import Resource」を押すとPathsとAPI Proxies欄に値が設定されます。

<img width="1668" alt="スクリーンショット 2017-08-29 14.19.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/125842/2fd4ac53-78da-c029-9f73-c50b52b84787.png">

- 「Publish」⇢「Portals」を選択します。「+Portal」を押し、「Name」欄に「myportal」、「Description」欄に「My first portal」等と入力します。
- 「Create」を押しAPIポータルを作成します

<img width="1677" alt="スクリーンショット 2017-08-29 14.22.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/125842/72f28f57-95ab-5915-8971-e870e9541b09.png">

- ポータル画面右上の「APIs」を開いても、この時点ではAPIが登録されていないことを確認します
- 前項までに作成したStreetCartsAPIをポータルへ追加して公開します
- 「Publish」⇢「portals」から上記で作成した 「myportal」を選択します。URLをクリックするとポータル画面へ遷移してしまうので、「myportal」の名前の部分をクリックする点に注意します。
- 表示するメニュー画面から「APIｓ」を選択します

<img width="1417" alt="スクリーンショット 2017-08-29 14.27.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/125842/d34c6277-c980-cd89-f8bf-6442c5080b0c.png">

- 画面右上の「＋API」を押してAPIを追加していきます

<img width="1676" alt="スクリーンショット 2017-08-29 14.28.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/125842/85f3032d-8781-710a-187a-b5964c82718f.png">

- 表示されるAPI一覧から「StreetCarts」APIを選択し、「Add Spec Snapshot」を押します。
- 「Publish」が選択されていることを確認し、「Review」で内容を確認したのち、「Save & Complete」を押してAPIを公開します
- ポータル画面から「APIｓ」を選択すると、公開したAPIが表示されることを確認します

<img width="851" alt="スクリーンショット 2017-08-29 14.31.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/125842/2f65f1c1-c973-ef38-4997-447cbf2bea8b.png">