本頁內容適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
變更目標端點後,您就可以在 Proxy 中新增政策。
政策是 Apigee 元件,您可以透過 API Proxy 將政策附加至訊息流程中的不同點。政策可以轉換訊息格式、強制執行存取權控管、呼叫遠端服務、授權使用者、檢查訊息內容是否有潛在威脅,以及執行更多操作。
在本教學課程中,您會在 Proxy 中新增 XMLtoJSON 政策。這項政策會將 XML 訊息的酬載轉換為 JSON。也會變更回應的 Content-Type
標頭。
您可以將政策附加至 Proxy 中的「流程」。流程會控管政策的執行方式。在本範例中,您會將政策新增至名為 PreFlow 的特殊流程。 PreFlow 中的政策會在 Proxy 中的任何其他政策之前執行。 雖然您不需要詳細瞭解流程即可閱讀這個範例,但可以參閱「使用流程控管 API Proxy」一文,進一步瞭解流程。
新增政策
將 XMLtoJSON 政策新增至 Proxy。
Cloud 控制台中的 Apigee
如要在 Proxy 中新增 XMLtoJSON 政策,請按照下列兩個步驟操作:
建立政策例項
如要使用政策,您必須先從政策範本建立新的政策執行個體,如下所示:
-
在 Google Cloud 控制台中,前往「Proxy development」(Proxy 開發) >「API proxies」(API Proxy) 頁面。
- 從 Proxy 清單中,選取要新增政策的 Proxy。
按一下「開發」分頁標籤。
- 在左側窗格中,按一下「政策」資料夾旁的「+」按鈕。
- 在「建立政策」對話方塊中,選取「標準政策」,依政策類型篩選可用政策清單。
- 在「選取政策類型」文字方塊中,向下捲動至「中介服務」,然後選取「XML 轉 JSON」。
視需要變更政策的「名稱」和「顯示名稱」。 根據預設,Apigee 會為政策名稱提供簡短前置字串,在此案例中為 X2J-,您可以在前置字串後方加上以破折號分隔的描述性字詞序列。請參閱「 命名慣例」。
完成後,按一下「建立」即可建立政策。
「XML 轉 JSON」政策現在會顯示在「開發」檢視畫面的右側窗格中:
窗格下半部會顯示政策的 XML 程式碼。
如要進一步瞭解政策,請選取政策名稱旁邊的資訊圖示 ,然後按一下「XML To JSON policy」(XML 轉 JSON 政策)。系統會顯示政策的參考頁面。
使用 Gemini Code Assist 檢查政策指示
如果您有 Gemini Code Assist 外掛程式,可以醒目顯示政策元素,查看該元素的相關資訊和使用方式。詳情請參閱「使用 Gemini Code Assist 程式碼說明功能時的政策」。
變更政策名稱
如要變更政策名稱:
- 在左側窗格中,選取「政策」下方的政策。
- 在政策的 XML 程式碼中,於 <DisplayName> 元素內,
在政策名稱縮寫後方,新增政策的描述性片語,例如 change-xml-to-json:
系統會自動更新「政策」下方顯示的政策名稱。
請參閱 命名慣例。
將政策附加至 PreFlow 中的步驟
現在您已建立 XML 轉 JSON 政策,可以將其附加至 PreFlow 中的步驟:
- 在左側窗格中,依序選取「Proxy Endpoints」>「default」>「PreFlow」:
注意:您可能需要在右側窗格中展開視覺化編輯器,才能看到所有元素。 如要這麼做,請按一下並將視覺化編輯器和文字編輯器之間的分隔線稍微向下拖曳。
- 在視覺化編輯器的右下方,按一下「Response」(回覆) 窗格中「PreFlow」(前置流程) 旁的「+」按鈕:
- 在「新增政策步驟」對話方塊中,選取「X2J-change-xml-to-json」X2J-change-xml-to-json政策。
按一下「新增」附加政策。
「X2J-change-xml-to-json」X2J-change-xml-to-json政策現在會顯示在「Response」(回應) 窗格中:
- 按一下「儲存」,即可儲存變更後的目前修訂版本。
- 如要將變更部署至修訂版本,請按一下「Deploy」(部署),然後按照「 部署 API Proxy」一文中的操作說明進行。
傳統版 Apigee UI
如要在 Proxy 中新增 XMLtoJSON 政策,請按照下列步驟操作:
- 在瀏覽器中開啟 Apigee UI 並登入。
- 在主視窗中按一下「API Proxy」,然後選取 Proxy。在本例中,請選取您在「步驟 2:建立 API Proxy」中建立的 Proxy。
按一下「開發」分頁標籤:
Apigee 會顯示 API Proxy 編輯器。
在「Navigator」窗格中,依序點選「Proxy Endpoints」>「default」>「PreFlow」:
Apigee 會顯示流程編輯器:
此外,Apigee 會在「程式碼」窗格中顯示預設的 Proxy 端點設定:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ProxyEndpoint name="default"> <Description/> <FaultRules/> <PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <Flows/> <HTTPProxyConnection> <BasePath>/myproxy</BasePath> <Properties/> <VirtualHost>default</VirtualHost> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection> <RouteRule name="default"> <TargetEndpoint>default</TargetEndpoint> </RouteRule> </ProxyEndpoint>
- 如要將政策新增至 Proxy,請在回應 PreFlow (流程編輯器底部) 中按一下「+ Step」按鈕:
Apigee 會在「Add」(新增) 對話方塊中顯示政策分類清單,您可以將政策新增至流程:
- 向下捲動,然後選取「中介服務」類別中的「XMLtoJSON」XMLtoJSON政策。
保留預設名稱,然後按一下「新增」。
Apigee 會將新政策附加至回應的 PreFlow:
請注意,點選「新增」時,Apigee 會執行下列操作:
- 在「導覽器」窗格的「政策」下方新增政策。
- 在「流程」窗格中新增 XMLtoJSON 政策。
- 在「程式碼」窗格中顯示政策的設定 XML。
- 按一下「儲存」,即可儲存變更後的目前修訂版本。
- 如要部署變更,請按一下「總覽」分頁標籤,然後按一下「部署」按鈕。
測試新政策
如要測試新政策,請在終端機視窗中執行下列 curl
指令:
curl https://YOUR_ENV_GROUP_HOSTNAME/myproxy
其中 YOUR ENV_GROUP_HOSTNAME
是環境群組主機名稱。請參閱「
找出環境群組主機名稱」。
詳情請參閱「 呼叫 API Proxy」。
你也可以在瀏覽器中開啟相同網址。
您應該會收到下列回應內容:
{ "root": { "city": "San Jose", "firstName": "John", "lastName": "Doe", "state": "CA" } }
如果回應主體不是這樣,請檢查下列事項:
- 如步驟 4:變更目標端點所述,目標端點為
https://mocktarget.apigee.net/xml
:- 如果收到
Hello, Guest!
回應,則必須在目標端點結尾附加/xml
。 - 如果收到
404
,請確認您存取的是apigee.net
,而非apigee.com
。
- 如果收到
- 系統會部署您代理程式的最新修訂版本。請嘗試重新部署 API Proxy,如「部署 API Proxy」和「取消部署 API Proxy」所述。
如要查看 HTTP 要求和回應標頭,請在 curl
中使用 -vs
選項啟用詳細資訊 (v
會提供詳細的回應,但 s
會略過一些較不重要的詳細資料)。以下範例假設 Proxy 名為 myproxy
:
curl -vs https://YOUR_ENV_GROUP_HOSTNAME/myproxy | python -m json.tool
您應該會收到類似以下的回覆。請注意,回應中的 Content-Type
標頭為 application/json
。XMLtoJSON 政策會在傳回回應前變更標頭。
* Trying 10.20.30.40... * TCP_NODELAY set * Connected to apitest.acme.com (10.20.30.40) port 443 (#0) ... > GET /myproxy HTTP/1.1 > Host: apitest.acme.com > User-Agent: curl/7.58.0 > Accept: */* > < HTTP/1.1 200 OK < Date: Fri, 25 May 2018 16:20:00 GMT < Content-Type: application/json;charset=UTF-8 < Content-Length: 77 < Connection: keep-alive < X-Powered-By: Apigee < Access-Control-Allow-Origin: * ... { [77 bytes data] { "root": { "city": "San Jose", "firstName": "John", "lastName": "Doe", "state": "CA" } }