Apigee 学習記録

Apigeeとは
-----------------------
Apigeeは、Google CloudのネイティブAPI管理プラットフォームで、APIを構築、管理、保護ができる


APIプロキシにより、プロキシレイヤーを介して、バックエンドサービスとの信頼性の高いインターフェースを簡単に作成できる
* セキュリティ
* レート制限
* リソースの割り当て
* 分析

例えば、、
* アクセス制御
* HTTPメソッドの制限
* リクエストのサイズの制限
* 認証と認可

Apigee が提供する機能
-----------------------
* APIプロキシレイヤー
バックエンドサービスと内部または外部のクライアントの間に配置される中間レイヤーです。主に、APIのセキュリティ、トラフィック管理、データの変換などができる
<br></br>
* ポリシー
APIプロキシレイヤーに追加される機能のセットで、セキュリティ、トラフィック管理、データの変換などの機能を提供します。カスタムコード、条件付きロジック、障害処理、レート制限、キャッシュ保存などができる
<br></br>
* エンタープライズクラスのAPI管理ソリューション
Apigeeは、セキュリティやトラフィック管理などの機能を組み合わせ、堅牢なAPI管理ソリューションを提供ができる
<br></br>
* プロキシの変更が容易
Apigeeのポリシーやアクションは、APIプロキシレイヤーで実装されているため、バックエンドサービスの変更ができる

Apigee を使用する主なメリット
-----------------------
* API の分析情報
    * アクセスの確保やアラートの設定、APIの使用状況の分析できる
* API の信頼性
    * バックエンドの変更をクライアントアプリケーションが中断することなくサービスを提供できる

https://cloud.google.com/apigee/docs/api-platform/get-started/what-apigee?hl=ja

APIプロキシを作成する
---
プロキシ開発＞APIプロキシ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/77b46961-fcfb-b356-a7e7-77b9a659ed96.png)

画面遷移後、+CREATEをクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/f7cf02fe-cf10-0c05-35f7-360e8345f305.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/335b8461-8d0b-fc55-216c-7cf503d4cce1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/93ac6746-9322-1bf0-b76b-bd7ef2815d8b.png)


デプロイ
---
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/93ac6746-9322-1bf0-b76b-bd7ef2815d8b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/12aa8974-2598-f947-90e8-31e883634228.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/b5150c78-cba3-0c2f-c576-4015c8d55812.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/fa63be97-0a69-608a-5b37-54d7aa1a4ca6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/076d72d7-9432-6aaf-3477-417a7b8e3f59.png)

```
# curl https://35.227.252.4.nip.io/test-proxy
# Hello, Guest!
```

エンドポイントを変更する
---
タブのDEVELOPを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/88738bac-0ba1-2fc1-5c3e-2f96797a9560.png)

[Proxy revision] ペインで、[Target Endpoints] > [default] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/3b59c978-d66e-bb65-c72f-c31fc071f51d.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/283d4145-0de3-c338-9230-f23c012852f3.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/63b32077-adcb-9b16-f790-13eec2415b05.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/ae65d1b2-594d-af86-33f8-e703d2ca1531.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/522d6c91-5ad4-e6c9-2164-f75c5a7e5294.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/3cf988fb-8099-8597-5d05-2ba2b5271b14.png)

デプロイする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/23b3499b-878f-7852-528c-5f20499700e6.png)

テストをする
```
curl https://35.227.252.4.nip.io/test-proxy
<?xml version="1.0" encoding="UTF-8"?> <root><city>San Jose</city><firstName>John</firstName><lastName>Doe</lastName><state>CA</state></root>
```

ポリシーを追加する
---
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/3082509e-ff6a-73ea-1b28-56f02fe78daa.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/49834b6c-8686-3bc7-1870-325929f982ec.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/214426f6-23db-d39e-25f9-84af5aa6ec39.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/8abe6f04-ae6c-e13e-bda7-27ae62ef6e18.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/0f93732d-12dd-ce88-cc81-ac556a626183.png)

ポリシー名変更
---
Displaynameを変更した方が、組織で仕事する場合は親切であるとは、思うのでそれを想定し、変更してみます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/0c29a772-fd83-402c-7c82-067311875ef3.png)

変更前
```
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON continueOnError="false" enabled="true" name="X2J-test0507-name">
  <DisplayName>X2J-test0507-display-name</DisplayName>
  <Properties/>
  <Format>yahoo</Format>
  <OutputVariable>response</OutputVariable>
  <Source>response</Source>
</XMLToJSON>

```
変更後
```
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON continueOnError="false" enabled="true" name="X2J-test0507-name">
  <DisplayName>X2J-change-xml-to-json-test0507</DisplayName>
  <Properties/>
  <Format>yahoo</Format>
  <OutputVariable>response</OutputVariable>
  <Source>response</Source>
</XMLToJSON>
```

ポリシーを PreFlow のステップに接続する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/f1a96e21-7643-392a-bf6c-ddd537aa69e5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/ce266003-22d8-1ef6-a4ee-088aa79ac420.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3146038/26830b4a-4030-4bc1-f0f0-d5f51a7d3643.png)

再度デプロイをする

テスト
```


curl https://35.227.252.4.nip.io/test-proxy|python -m json.tool
{"root":{"city":"San Jose","firstName":"John","lastName":"Doe","state":"CA"}}
```

https://cloud.google.com/apigee/docs/api-platform/get-started/go-deeper?hl=ja

備考
---
ビジュアルエディタ形式でとてもわかりやすい

これもあとで説明を加える