查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
每個機構都有獨特的軟體開發生命週期 (SDLC)。這通常需要 ,讓 API Proxy 部署項目與後端服務所用的程序保持同步。
本主題中示範的 Edge API 方法可用來整合 API Proxy 管理貴機構的 SDLC。這個 API 的常見用途是編寫指令碼或程式碼 負責部署 API Proxy,或是將 API Proxy 從一個環境遷移至另一個環境 大型自動化程序,一併部署或遷移其他應用程式。
Edge API 不會對您的 SDLC 做出任何假設,或對其他任何人員的假設。 而是公開可由開發團隊協調的原子功能,以將作業自動化 並最佳化 API 開發生命週期
詳情請參閱 Edge API。
如要使用 Edge API,您必須在呼叫中驗證身分。方法如下: 您可以選擇下列其中一種做法:
本主題重點介紹用於管理 API Proxy 的 API 組合,
影片:觀看這部短片,瞭解如何部署 API。
與 API 互動
下列步驟會逐步引導您完成簡單的 API 互動。
列出貴機構的 API
您可以先列出貴機構中所有的 API Proxy。(記得更換 「EMAIL:PASSWORD」和「ORG_NAME」項目。如需指示,請參閱: 使用 Edge API。
curl -u EMAIL:PASSWORD \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis
回應範例:
[ "weatherapi" ]
取得 API
您可以在貴機構的任何 API Proxy 上呼叫 GET
方法。這項呼叫會傳回
API Proxy 的所有可用修訂版本。
curl -u EMAIL:PASSWORD -H "Accept: application/json" \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi
回應範例:
{ "name" : "weatherapi", "revision" : [ "1" ] }
這個方法只會傳回 API Proxy 名稱及相關 revision,所以具有相關聯的數字。API Proxy 包含一組設定 檔案。修訂版本是方便管理設定的更新機制 反覆改進修訂版本會依序編號,您可以透過部署來還原變更 先前的 API Proxy 修訂版本此外,您也可以將 API Proxy 修訂版本部署至 正式環境,同時繼續在測試中為該 API Proxy 建立新的修訂版本 環境。準備就緒後,即可從 測試環境。
這個範例中只有一個修訂版本,因為剛才已建立 API Proxy。以 API 的形式 Proxy 會經歷疊代設定和部署作業的生命週期 (修訂版本編號) 值。使用直接 API 呼叫進行部署時,您可以選擇遞增 API Proxy 修訂版本編號有時即使稍微小幅變更 遞增修訂版本。
取得 API 修訂版本
API 版本 (例如 api.company.com/v1
) 應會大幅改變
這並非易事您逐步增加 API 版本時,就會向開發人員表示
明顯變更 API 公開的外部介面簽名。
API Proxy 修訂版本是與 API Proxy 相關聯的遞增號碼
此外還會從 0 自動調整資源配置
您完全不必調整資源調度設定API 服務會保留您的設定修訂版本,因此您可以
避免設定發生問題根據預設,API Proxy 的修訂版本會自動更新
在每次您使用 Import an API Proxy API 匯入 API Proxy 時遞增。如果發生以下情況:
如果不想累加 API Proxy 修訂版本,請使用 Update
API Proxy 修訂版本 API。如果您使用 Maven 進行部署,請使用 clean
或
update
選項 (如 Maven 外掛程式中所述)
readme。
舉例來說,您可以在 API Proxy 修訂版本 1 上呼叫 GET
方法,以取得詳細檢視畫面。
curl -u EMAIL:PASSWORD -H "Accept:application/json" \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi/revisions/1
回應範例
{ "configurationVersion" : { "majorVersion" : 4, "minorVersion" : 0 }, "contextInfo" : "Revision 1 of application weatherapi, in organization {org_name}", "createdAt" : 1343178905169, "createdBy" : "andrew@apigee.com", "lastModifiedAt" : 1343178905169, "lastModifiedBy" : "andrew@apigee.com", "name" : "weatherapi", "policies" : [ ], "proxyEndpoints" : [ ], "resources" : [ ], "revision" : "1", "targetEndpoints" : [ ], "targetServers" : [ ], "type" : "Application" }
如需這些 API Proxy 設定元素的詳細資訊,請參閱 API Proxy 設定參考資料。
將 API 部署至 環境
設定 API Proxy 正確接收和轉送要求後,您就可以部署 Proxy
一或多個環境您通常可以在 test
中對 API Proxy 進行疊代作業
您將 API Proxy 修訂版本「升級」為 prod
。通常您會發現
測試環境中 API Proxy 的修訂版本,主要原因在於
在正式環境中執行疊代
將 API Proxy 部署至環境後,才能叫用該 Proxy。
將 API Proxy 修訂版本部署至實際工作環境,接著您就能將 prod
網址發布至外部
開發人員。
如何列出環境
Apigee Edge 中的每個機構至少都有兩個環境:test
和 prod
。
您可以任意區隔目的是提供一個區塊,方便驗證 API Proxy
確認一切運作正常,再向外部開發人員開放
每個環境實際上都只是網路位址,可讓您隔離 您正在處理的 API Proxy,以及應用程式在執行階段存取的 API Proxy。
環境也提供資料和資源區隔。例如,您可以設定 測試和實際工作環境中的不同快取,只有執行於該程式的 API Proxy 才能存取 環境。
查看 機構組織
curl -u EMAIL:PASSWORD \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments
回應範例
[ "test", "prod" ]
探索部署項目
「部署作業」是已部署在環境中的 API Proxy 修訂版本。API
您可以透過網路存取處於 已部署狀態的 Proxy,也就是
該環境的 <VirtualHost>
元素。
部署 API Proxy
必須先部署 API Proxy,才能叫用 API。API 服務會公開符合 REST 樣式的 API 可讓您控管部署程序
單一環境中一次只能部署一項 API Proxy 修訂版本。因此 就必須取消部署已部署的修訂版本您可以控制是否部署新套件 或覆寫現有的修訂版本。
您目前查看的是 Apigee Edge 說明文件。
參閱 Apigee X 說明文件。 資訊
首先,請取消部署現有的修訂版本。指定環境名稱和修訂版本編號 要取消部署的 API Proxy:
curl -X DELETE \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments \ -u EMAIL:PASSWORD
然後部署新的修訂版本。新的 API Proxy 修訂版本必須已存在:
curl -X POST -H "Content-type:application/x-www-form-urlencoded" \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments \ -u EMAIL:PASSWORD
輕鬆部署 (完全無需停機)
如要盡可能降低部署期間發生停機時間的可能性,請使用 override
參數
並將其設為 true
。
您無法逐一部署 API Proxy 修訂版本。第一個必須永遠
將 override
設定為 true
,表示 1 個修訂版本
的 API Proxy 應透過目前部署的修訂版本部署。結果就是
部署順序相反,新的修訂版本會部署新的修訂版本
完成,系統便會取消部署已部署的修訂版本。
以下範例會將 override
值做為表單參數傳遞以設定:
curl -X POST -H "Content-type:application/x-www-form-urlencoded" \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/e/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments" \ -d "override=true" \ -u EMAIL:PASSWORD
您可以設定 delay
參數,進一步最佳化部署作業。
delay
參數指定上一個時間間隔 (以秒為單位)
應取消部署這是因為處理中的交易在
取消部署 API Proxy 處理交易前所要完成的請求。追蹤對象為
override=true
和 delay
參數組合的結果:
- 修訂版本 1 正在處理要求。
- 系統正在平行部署修訂版本 2。
- 完整部署修訂版本 2 後,新流量會傳送至修訂版本 2。無新流量 已傳送至修訂版本 1。
- 不過,修訂版本 1 可能仍在處理現有的交易,透過設定
delay
參數 (例如 15 秒) 時,您將修訂版本 1 15 秒提供給 完成現有交易的處理程序 - 延遲時間過後,修訂版本 1 就會取消部署。
curl -X POST -H "Content-type:application/x-www-form-urlencoded" \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/e/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments?delay=15" \ -d "override=true" \ -u EMAIL:PASSWORD
查詢參數 | 說明 |
---|---|
override |
預設值為 設為 |
delay |
允許在現有修訂版本之前完成交易處理程序
以避免發生 預設值為 0 (零) 秒。如果 |
將 override=true
與 delay
搭配使用時,HTTP 5XX
刪除作業期間的回應這是因為兩個 API Proxy 修訂版本都會
並同時取消部署較舊的修訂版本
查看 API 的所有部署項目 修訂版本
有時候需要擷取 API 目前部署所有修訂版本的清單 Proxy 上。
curl https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi/revisions/1/deployments \ -u EMAIL:PASSWORD
{ "aPIProxy" : "weatherapi", "environment" : [ { "configuration" : { "basePath" : "", "steps" : [ ] }, "name" : "test", "server" : [ { "status" : "deployed", "type" : [ "message-processor" ], "uUID" : "90096dd1-1019-406b-9f42-fbb80cd01200" }, { "status" : "deployed", "type" : [ "message-processor" ], "uUID" : "7d6e2eb1-581a-4db0-8045-20d9c3306549" }, { "status" : "deployed", "type" : [ "router" ], "uUID" : "1619e2d7-c822-45e0-9f97-63882fb6a805" }, { "status" : "deployed", "type" : [ "router" ], "uUID" : "8a5f3d5f-46f8-4e99-b4cc-955875c8a8c8" } ], "state" : "deployed" } ], "name" : "1", "organization" : "org_name" }
上述回應包含 Apigee 內部基礎架構的許多特定屬性 邊緣除非您使用 Apigee Edge 地端部署,否則無法變更這些設定。
回應中包含的重要屬性是 organization
、
environment
、aPIProxy
、name
和state
。變更者:
檢閱這些屬性值之後,您可以確認特定的 API Proxy 修訂版本
部署於環境中
如要查看所有部署項目,請參閱 測試環境
您也可以擷取特定環境 (包括修訂版本) 的部署狀態 數量),接著使用以下呼叫:
curl -u EMAIL:PASSWORD https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/test/deployments
這會針對測試環境中部署的每個 API 傳回與上述結果相同的結果
查看以下項目中的所有部署項目: 機構組織
如要擷取所有環境中目前部署的所有 API Proxy 修訂版本清單, 請使用下列 API 方法:
curl https://api.enterprise.apigee.com/v1/o/ORG_NAME/deployments \ -u EMAIL:PASSWORD
在所有環境中部署的所有 API Proxy 都會傳回與上述相同的結果。
由於 API 符合 REST 樣式,因此您可以直接使用 POST
方法,搭配 JSON 或 XML
以建立 API Proxy。
系統會產生 API Proxy 設定檔。API Proxy 的預設表示法是
JavaScript 物件標記法 (JSON)。以下是上述 POST
要求的預設 JSON 回應。
這個 API 建立了名為 weatherapi
的 API Proxy設定檔中每個元素的說明
如下:
{ "configurationVersion" : { "majorVersion" : 4, "minorVersion" : 0 }, "contextInfo" : "Revision 1 of application weatherapi, in organization {org_name}", "createdAt" : 1357172145444, "createdBy" : "you@yourcompany.com", "displayName" : "weatherapi", "lastModifiedAt" : 1357172145444, "lastModifiedBy" : "you@yourcompany.com", "name" : "weatherapi", "policies" : [ ], "proxyEndpoints" : [ ], "resources" : [ ], "revision" : "1", "targetEndpoints" : [ ], "targetServers" : [ ], "type" : "Application" }
系統產生的 API Proxy 設定檔會顯示 API 的完整結構 Proxy:
APIProxy revision
:API Proxy 的疊代疊代作業 完全由 API 服務維護APIProxy name
:API Proxy 的專屬名稱ConfigurationVersion
:API Proxy 的 API 服務版本 設定必須符合CreatedAt
:產生 API Proxy 的時間,以 UNIX 時間格式CreatedBy
:建立 API 的 Apigee Edge 使用者電子郵件地址 ProxyDisplayName
:API Proxy 的易記名稱LastModifiedAt
:產生 API Proxy 的時間,格式為 UNIX 經過時間LastModifiedBy
:建立 API 的 Apigee Edge 使用者電子郵件地址 ProxyPolicies
:已新增至這個 API Proxy 的政策清單ProxyEndpoints
:已命名 ProxyEndpoint 的清單Resources
:這份清單中,可供讀取的資源 (JavaScript、Python、Java、XSLT) 會在這個 API Proxy 中執行TargetServers
:具名 TargetServers 的清單,可使用 Management API),用於負載平衡用途的進階設定TargetEndpoints
:已命名 TargetEndpoint 的清單
請注意,許多透過簡易 POST
建立的 API Proxy 設定元素
上述方法沒有任何內容。在下列主題中,您將瞭解如何新增及設定鍵
API Proxy 元件
您也可以參閱 API Proxy 設定參考資料,瞭解這些設定元素。
針對 API 編寫指令碼
使用範例 API Proxy GitHub 提供的殼層指令碼可用來包裝 Apigee 部署工具。如果出於某種原因 您無法使用 Python 部署工具,然後再直接呼叫 API。這兩種做法 如下方指令碼範例所示
包裝部署工具
首先,請確認 Python 部署工具 可用的虛擬機器。
然後建立檔案來存放憑證。您編寫的部署指令碼
方便您集中管理帳戶憑證。在 API 中
平台範例,這個檔案稱為 setenv.sh
。
#!/bin/bash org="Your ORG on enterprise.apigee.com" username="Your USERNAME on enterprise.apigee.com" # While testing, it's not necessary to change the setting below env="test" # Change the value below only if you have an on-premise deployment url="https://api.enterprise.apigee.com" # Change the value below only if you have a custom domain api_domain="apigee.net" export org=$org export username=$username export env=$env export url=$url export api_domain=$api_domain
上方檔案提供所有設定給包裝部署的殼層指令碼 如果偏好在終端機視窗中工作 可使用 Google Cloud CLI gcloud 指令列工具
現在,請建立用於匯入設定的殼層指令碼,並使用這些設定呼叫部署工具。 (如需範例,請參閱 Apigee API 平台範例))。
#!/bin/bash source path/to/setenv.sh echo "Enter your password for the Apigee Enterprise organization $org, followed by [ENTER]:" read -s password echo Deploying $proxy to $env on $url using $username and $org path/to/deploy.py -n {api_name} -u $username:$password -o $org -h $url -e $env -p / -d path/to/apiproxy
為了方便起見,也建議您建立指令碼來叫用及測試 API,如 如下:
#!/bin/bash
echo Using org and environment configured in /setup/setenv.sh
source /path/to/setenv.sh
set -x
curl "http://$org-$env.apigee.net/{api_basepath}"
直接叫用 API
編寫簡單的 shell 指令碼,自動上傳和 和部署 API Proxy
以下指令碼直接叫用 Management API。可將現有的修訂版本取消部署
如果要更新的 API Proxy,請從 /apiproxy
目錄建立 ZIP 檔案
,然後上傳、匯入及部署
此外還會從 0 自動調整資源配置
您完全不必調整資源調度設定
#!/bin/bash #This sets the name of the API proxy and the basepath where the API will be available api=api source /path/to/setenv.sh echo Delete the DS_store file on OSX echo find . -name .DS_Store -print0 | xargs -0 rm -rf find . -name .DS_Store -print0 | xargs -0 rm -rf echo "Enter your password for the Apigee Enterprise organization $org, followed by [ENTER]:" read -s password echo Undeploy and delete the previous revision # Note that you need to explicitly update the revision to be undeployed. # One benefit of the Python deploy tool is that it manages this for you. curl -k -u $username:$password "$url/v1/o/$org/e/$env/apis/$api/revisions/1/deployments" -X DELETE curl -k -u $username:$password -X DELETE "$url/v1/o/$org/apis/$api/revisions/1" rm -rf $api.zip echo Create the API proxy bundle and deploy zip -r $api.zip apiproxy echo Import the new revision to $env environment curl -k -v -u $username:$password "$url/v1/o/$org/apis?action=import&name=$api" -T $api.zip -H "Content-Type: application/octet-stream" -X POST echo Deploy the new revision to $env environment curl -k -u $username:$password "$url/v1/o/$org/e/$env/apis/$api/revisions/1/deployments" -X POST