查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
本節說明如何使用 Edge API 建立 API 產品,以便在開發人員入口網站中發布。
使用 API 建立 API 產品
API 產品可讓開發人員註冊 透過 API 金鑰和 OAuth 存取權杖使用 API 的應用程式。API 產品的設計目的 可讓你「套裝組合」API 資源,然後將這些套裝組合發布至不同群組 開發人員。舉例來說,你可能需要發布一組 API 資源給合作夥伴。 則發布其他套件給外部開發人員。API 產品可讓您 即可即時執行套裝組合,完全不需要對 API 進行任何變更。一個 因為開發人員存取權可以「升級」以及「降級」不必 為自家應用程式取得新的消費者金鑰。
如要使用 API 建立 API 產品,請向
/organizations/{org_name}/apiproducts
。
詳情請參閱「建立 API 產品」API 參考資料。
以下要求會建立名為 weather_free
的 API 產品。API 產品
能讓您存取 API Proxy 公開,且名為 weatherapi
的所有 API。
部署於 test
環境核准類型已設為「auto
」,表示沒有任何核准類型
存取權要求會通過核准。
curl -X POST https://api.enterprise.apigee.com/v1/organization/myorg/apiproducts \ -H "Content-Type:application/json" \ -d \ '{ "approvalType": "auto", "displayName": "Free API Product", "name": "weather_free", "proxies": [ "weatherapi" ], "environments": [ "test" ] }' \ -u email:password
回應範例:
{ "apiResources" : [ ], "approvalType" : "auto", "attributes" : [ ], "createdAt" : 1362759663145, "createdBy" : "developer@apigee.com", "displayName" : "Free API Product", "environments" : [ "test" ], "lastModifiedAt" : 1362759663145, "lastModifiedBy" : "developer@apigee.com", "name" : "weather_free", "proxies" : [ "weatherapi" ], "scopes" : [ ] }
上方建立的 API 產品實作了最基本的狀況, 部署與存取 API Proxy用於定義可讓已授權應用程式存取的 API 產品 在測試環境中執行的 API Proxy 存取任何 API 資源。API 產品 公開其他配置設定,以便自訂 API 的存取權控管機制 適合不同的開發人員群組舉例來說,您可以建立兩項 API 產品來提供存取權 不同的 API Proxy您也可以建立兩項 API 產品 API Proxy,但相關聯的配額設定不同。
API 產品配置設定
API 產品提供下列設定選項:
名稱 | 說明 | 預設 | 必填與否 |
---|---|---|---|
apiResources |
以逗號分隔的 URI 清單或資源路徑,「bundled」傳入 API 產品。 根據預設,資源路徑是從 您可以選取特定路徑,也可以使用萬用字元選取所有子路徑。
系統支援萬用字元 (/** 和 /*)。兩個星號萬用字元表示
包含子 URI。單一星號表示只有一個層級
包含。 |
不適用 | 否 |
approvalType |
指定如何核准 API 金鑰存取 API 產品定義的 API。如果
設為 manual ,系統為應用程式產生的金鑰位於「pending」時間。
這類金鑰須明確核准才能運作。如果設為 auto ,
所有金鑰都會依據「已核准」立即著手處理(auto 是
通常用於提供配額有限的免費試用 API 產品
或功能)。 |
不適用 | 是 |
attributes |
可用來擴充預設 API 產品設定檔的屬性陣列 客戶專屬的中繼資料
使用這個屬性,將 API 產品的存取層級指定為「公開」、「私人」或「內部」。例如:
"attributes": [
{
"name": "存取",
"value": "public"
},你好:
{
"name": "foo","value": "foo" }, { "name": "bar", "value": "bar" }
]。
|
不適用 | 否 |
scopes |
列出了執行階段驗證的 OAuth 範圍清單 (以半形逗號分隔)。(Apigee Edge 驗證所有提供存取權杖中的範圍是否與 API 中設定的範圍相符 product.) | 不適用 | 否 |
proxies |
與這項 API 產品繫結的已命名 API Proxy。指定 Proxy 後 將 API 產品中的資源與特定 API Proxy 建立關聯,防止開發人員 防止透過其他 API Proxy 存取這些資源 | 不適用 | 否。如未定義,則必須明確定義 apiResources (請參閱資訊)
,apiResources ),且在 flow.resource.name 變數中設定
assignMessage 政策。 |
environments |
與這項 API 產品繫結的已命名環境 (例如「test」或「prod」)。 只要指定一或多個環境,就能繫結 API 產品中列出的資源 禁止開發人員透過 API 存取這些資源 連線至另一個環境的 Proxy這項設定可用來 與 API Proxy 相關聯的「正式版本」部署於 Kubernetes 叢集時 「test」。 | 不適用 | 否。如未定義,apiResources 必須明確定義,且
AssignMessage 政策中設定的 flow.resource.name 變數。 |
quota |
每個應用程式在指定時間間隔內允許的要求數。 | 不適用 | 否 |
quotaInterval |
評估配額的時間單位數 | 不適用 | 否 |
quotaTimeUnit |
計算配額的時間單位 (分鐘、小時、日或月)。 | 不適用 | 否 |
以下提供更詳細的 API 產品建立範例。
curl -X POST https://api.enterprise.apigee.com/v1/o/{org_name}/apiproducts \ -H "Content-Type:application/json" -d \ '{ "apiResources": [ "/forecastrss" ], "approvalType": "auto", "attributes": [ {"name": "access", "value": "public"} ], "description": "Free API Product", "displayName": "Free API Product", "name": "weather_free", "scopes": [], "proxies": [ "weatherapi" ], "environments": [ "test" ], "quota": "10", "quotaInterval": "2", "quotaTimeUnit": "hour" }' \ -u email:password
回應範例
{ "apiResources" : [ "/forecastrss" ], "approvalType" : "auto", "attributes" : [ { "name" : "access", "value" : "public" }, "createdAt" : 1344454200828, "createdBy" : "admin@apigee.com", "description" : "Free API Product", "displayName" : "Free API Product", "lastModifiedAt" : 1344454200828, "lastModifiedBy" : "admin@apigee.com", "name" : "weather_free", "scopes" : [ ], "proxies": [ {'weatherapi'} ], "environments": [ {'test'} ], "quota": "10", "quotaInterval": "1", "quotaTimeUnit": "hour"}' }
關於範圍
範圍是從 OAuth 取得的概念,大致對應到「權限」的概念。啟用 Apigee Edge,範圍完全是選擇性的。您可以運用範圍 或授權。核發給應用程式的每個用戶端金鑰都與「主要範圍」相關聯。 主要範圍是指此應用程式在所有 API 產品中獲得核准的所有範圍組合。適用對象 應用程式獲準使用多種 API 產品,主要範圍是所有範圍的聯集 API 產品中所定義。
查看 API 產品
如要查看運用 API 為機構建立的 API 產品,請參閱以下各節:
- 查看 API 產品 (營利)
根據預設,系統只會顯示營利的 API 產品,也就是至少含有一項已發布費率方案的 API 產品。 如要顯示所有 API 產品,請將
monetized
查詢參數設為false
。這相當於向非營利 List API 產品 API 發出 GET 要求:https://api.enterprise.apigee.com/v1/organizations/{org_name}/apiproducts?expand=true
- 查看 API 產品 (未營利)
- 查看開發人員符合資格的 API 產品
- 查看公司符合資格的 API 產品
以下範例說明如何透過 API 查看 API 產品:
curl -X GET "https://ext.apiexchange.org/v1/mint/organizations/{org_name}/products?monetized=true" \ -H "Accept:application/json" \ -u email:password
回應應如下所示 (僅顯示部分回覆):
{ "product" : [ { "customAtt1Name" : "user", "customAtt2Name" : "response size", "customAtt3Name" : "content-length", "description" : "payment api product", "displayName" : "payment", "id" : "payment", "name" : "payment", "organization" : { ... }, "pricePoints" : [ ], "status" : "CREATED", "transactionSuccessCriteria" : "status == 'SUCCESS'" }, { "customAtt1Name" : "user", "customAtt2Name" : "response size", "customAtt3Name" : "content-length", "description" : "messaging api product", "displayName" : "messaging", "id" : "messaging", "name" : "messaging", "organization" : ... }, "pricePoints" : [ ], "status" : "CREATED", "transactionSuccessCriteria" : "status == 'SUCCESS'" } ], "totalRecords" : 2 }
使用 API 註冊開發人員
所有應用程式都屬於開發人員或公司。因此,如要建立應用程式 。
開發人員是藉由建立個人資料在機構中註冊,請注意,開發人員 設定檔中的電子郵件地址,將為開發人員在整個流程中 Apigee Edge。
為了支援營利,你必須定義營利設定 屬性。您也可以定義其他 用於自訂分析、自訂政策強制執行等屬性; Apigee Edge 不會解讀這些屬性
舉例來說,下列要求會註冊電子郵件地址為
ntesla@theremin.com
,定義一部分的營利方式
屬性:建立開發人員 API:
$ curl -H "Content-type:application/json" -X POST -d \ '{"email" : "ntesla@theremin.com", "firstName" : "Nikola", "lastName" : "Tesla", "userName" : "theremin", "attributes" : [ { "name" : "project_type", "value" : "public" }, { "name": "MINT_BILLING_TYPE", "value": "POSTPAID" }, { "name": "MINT_DEVELOPER_ADDRESS", "value": "{\"address1\":\"Dev One Address\",\"city\":\"Pleasanton\",\"country\":\"US\",\"isPrimary\":true,\"state\":\"CA\",\"zip\":\"94588\"}" }, { "name": "MINT_DEVELOPER_TYPE", "value": "TRUSTED" }, { "name": "MINT_HAS_SELF_BILLING, "value": "FALSE" }, { "name" : "MINT_SUPPORTED_CURRENCY", "value" : "usd" } ] }' \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers \ -u email:password
回應範例
{ "email" : "ntesla@theremin.com", "firstName" : "Nikola", "lastName" : "Tesla", "userName" : "theremin", "organizationName" : "{org_name}", "status" : "active", "attributes" : [ { "name" : "project_type", "value" : "public" }, { "name": "MINT_BILLING_TYPE", "value": "POSTPAID" }, { "name": "MINT_DEVELOPER_ADDRESS", "value": "{\"address1\":\"Dev One Address\",\"city\":\"Pleasanton\",\"country\":\"US\",\"isPrimary\":true,\"state\":\"CA\",\"zip\":\"94588\"}" }, { "name": "MINT_DEVELOPER_TYPE", "value": "TRUSTED" }, { "name": "MINT_HAS_SELF_BILLING, "value": "FALSE" }, { "name" : "MINT_SUPPORTED_CURRENCY", "value" : "usd" } ], "createdAt" : 1343189787717, "createdBy" : "admin@apigee.com", "lastModifiedAt" : 1343189787717, "lastModifiedBy" : "admin@apigee.com" }
使用 API 註冊開發人員應用程式
在 Apigee Edge 上註冊的每個應用程式,都會與開發人員和 API 產品建立關聯。 當應用程式代表開發人員註冊時,Apigee Edge 會產生「憑證」(a 用戶端金鑰和密鑰配對)。接著,應用程式必須傳遞這些憑證 加進與應用程式相關 API 產品的每個要求中。
以下要求會使用 建立 開發人員應用程式 API,用來為您在上述步驟中建立的開發人員註冊應用程式: ntesla@theremin.com。註冊應用程式時,您必須定義應用程式名稱、callbackUrl 以及一或多個 API 的清單 產品:$ curl -H "Content-type:application/json" -X POST -d \ '{ "apiProducts": [ "weather_free"], "callbackUrl" : "login.weatherapp.com", "keyExpiresIn" : "2630000000", "name" : "weatherapp"}' \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps \ -u email:password
callbackUrl 會用於
使用某些 OAuth 授權類型 (例如授權碼) 來驗證應用程式的重新導向要求。
如果您使用的是 OAuth,則這個值必須設為與 redirect_uri
相同的值
用於發出 OAuth 要求
keyExpiresIn
屬性會以毫秒為單位,指定
而系統為開發人員應用程式產生的用戶端金鑰。預設值 -1 表示
沒有期限。
回應範例
{ "appId": "5760d130-528f-4388-8c6f-65a6b3042bd1", "attributes": [ { "name": "DisplayName", "value": "Test Key Expires" }, { "name": "Notes", "value": "Just testing this attribute" } ], "createdAt": 1421770824390, "createdBy": "wwitman@apigee.com", "credentials": [ { "apiProducts": [ { "apiproduct": "ProductNoResources", "status": "approved" } ], "attributes": [], "consumerKey": "jcAFDcfwImkJ19A5gTsZRzfBItlqohBt", "consumerSecret": "AX7lGGIRJs6s8J8y", "expiresAt": 1424400824401, "issuedAt": 1421770824401, "scopes": [], "status": "approved" } ], "developerId": "e4Oy8ddTo3p1BFhs", "lastModifiedAt": 1421770824390, "lastModifiedBy": "wwitman@apigee.com", "name": "TestKeyExpires", "scopes": [], "status": "approved" }
使用 API 管理應用程式的用戶端金鑰
取得用戶端金鑰 應用程式的 API 金鑰
應用程式憑證 (API 產品、用戶端金鑰和密鑰) 會在 應用程式設定檔。機構管理員可以隨時擷取用戶端金鑰。
應用程式設定檔會顯示用戶端金鑰的值與密鑰值,以及取用者的狀態 金鑰,以及與金鑰的任何 API 產品關聯。管理員可以擷取 隨時透過取得開發人員應用程式的重要詳細資料 API:
$ curl -X GET -H "Accept: application/json" \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J \ -u email:password
回應範例
{ "apiProducts" : [ { "apiproduct" : "weather_free", "status" : "approved" } ], "attributes" : [ ], "consumerKey" : "HQg0nCZ54adKobpqEJaE8FefGkdKFc2J", "consumerSecret" : "1eluIIdWG3JGDjE0", "status" : "approved" }
詳情請參閱 取得開發人員應用程式的重要詳細資料,瞭解詳情。
將 API 產品新增至 應用程式和金鑰
如要更新應用程式來新增 API 產品,您要將 API 產品新增至應用程式的金鑰 使用將 API 產品新增至 Key API。詳情請參閱 將 API 產品新增至金鑰以取得更多資訊。
將 API 產品新增至應用程式金鑰後,持有金鑰的應用程式就能存取 API 一起管理 API 產品所包含的資源下列方法呼叫會將新的 API 產品新增至 應用程式:
$ curl -H "Content-type:application/json" -X POST -d \ '{ "apiProducts": [ "newAPIProduct"] }' \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J \ -u email:password
回應範例:
{ "apiProducts": [ { "apiproduct": "weather_free", "status": "approved" }, { "apiproduct": "newAPIProduct", "status": "approved" } ], "attributes": [], "consumerKey": "HQg0nCZ54adKobpqEJaE8FefGkdKFc2J", "consumerSecret": "1eluIIdWG3JGDjE0", "expiresAt": -1, "issuedAt": 1411491156464, "scopes": [], "status": "approved" }
核准用戶端金鑰
將核准類型設為「手動」後,您就能控制
開發人員都能存取受 API 產品保護的資源。API 產品有金鑰時
核准已設為 manual
,因此用戶端金鑰必須明確核准。索引鍵可以是
使用核准或撤銷開發人員應用程式的特定金鑰明確獲準
API:
$ curl -X POST -H "Content-type:appilcation/octet-stream" \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J?"action=approve" \ -u email:password
回應範例
{ "apiProducts" : [ { "apiproduct" : "weather_free", "status" : "approved" } ], "attributes" : [ ], "consumerKey" : "HQg0nCZ54adKobpqEJaE8FefGkdKFc2J", "consumerSecret" : "1eluIIdWG3JGDjE0", "status" : "approved" }
詳情請參閱 可核准或撤銷開發人員應用程式的特定金鑰,瞭解詳情。
核准 API 產品 用戶端金鑰的新方法
API 產品與用戶端金鑰的關聯也有狀態。API 存取權 用戶端金鑰必須獲得核准,「而且」用戶端金鑰必須通過核准, 適當的 API 產品將消費端金鑰與 API 產品建立關聯可 透過核准或撤銷開發人員金鑰的 API 產品 應用程式 API:
$ curl -X POST -H "Content-type:application/octet-stream" \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J/apiproducts/weather_free?"action=approve" \ -u email:password
這個 cURL 指令不會傳回回應。詳情請參閱 可核准或撤銷開發人員應用程式金鑰的 API 產品。
撤銷以下項目的 API 產品: 用戶端金鑰
您可能會基於多種原因而必須撤銷用戶端金鑰與 API 的關聯 產品。由於 過期開發人員、試用期結束,或應用程式從某項 API 產品升級為 另一個例子。
如要撤銷用戶端金鑰與 API 產品的關聯,請使用核准 或撤銷開發人員應用程式 API 的特定金鑰 ,方法是針對 開發人員金鑰:
$ curl -X POST -H "Content-type:application/octet-stream" \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/ntesla@theremin.com/apps/weatherapp/keys/HQg0nCZ54adKobpqEJaE8FefGkdKFc2J/apiproducts/weather_free?"action=revoke" \ -u email:password
這個 cURL 指令不會傳回回應。詳情請參閱 可核准或撤銷開發人員應用程式的特定金鑰,瞭解詳情。
強制執行 API 產品設定
如要強制執行 API 產品,必須將下列其中一種政策類型附加至 API Proxy 流程:
- VerifyAPIKey:參照 API 金鑰,驗證其是否代表有效的應用程式。 符合 API 產品。請參閱驗證 API 金鑰政策: 內容。
- OAuthV1「VerifyAccessToken」作業:驗證簽章、驗證 OAuth 1.0a 存取權杖和「用戶端金鑰」,然後將應用程式與 API 產品進行比對。 請參閱 OAuth v1.0a 政策: 內容。
- OAuthV2「VerifyAccessToken」作業:驗證 OAuth 2.0 存取權 符記有效、將符記與應用程式比對,驗證應用程式是否有效,然後比對 將應用程式推送到 API 產品請參閱 OAuth 回家。
政策和 API 產品設定完成後,Apigee 會執行下列程序 邊緣:
- Apigee Edge 會接收要求,並轉送至適當的 API Proxy。
- 系統已執行的政策,驗證 API 金鑰或 OAuth 存取權杖 用戶端。
- Edge 會將 API 金鑰或存取權杖解析為應用程式設定檔。
- Edge 會解析與應用程式相關聯的 API 產品清單 (如果有的話)。
- 第一個相符的 API 產品會填入配額變數。
- 如果沒有符合 API 金鑰或存取權杖的 API 產品,系統就會拒絕要求。
- Edge 會根據 API 產品設定和配額設定。