
AI視頻剪輯工具:解鎖創作的無限可能
我們的場景是電子商務個性化。單個 GraphQL 端點連接多個 API 并通過 Apigee 進行代理。設想一個電子商務體驗,能夠返回用戶所在的城市以及以用戶當地貨幣計算的價值 3 美元(USD)的商品成本。只需幾個步驟,即可通過單一的 GraphQL 端點查詢連接多個 API。GraphQL 端點受到 Apigee GraphQL 策略的保護。
Apigee 檢查查詢是否符合架構,確保 API 密鑰有效,并收集有關 GraphQL 調用的分析。借助 Apigee 的 API 產品和 GraphQL 支持,能夠添加配額,甚至限制對某些 GraphQL 操作的訪問。
這種簡化的設置針對單一 GraphQL 模式進行驗證。此外,通過利用 Apigee 對流的支持,可以為不同用戶提供不同版本的架構。能夠完全阻止對模式的請求,同時仍允許查詢。最后,在開發者門戶中發布對 GraphQL 端點的訪問權限,使以自助服務方式使用 API 的開發者能夠訂閱并獲取唯一憑據以訪問新端點。
StepZen 對后端執行 GraphQL 調用。具體來說,StepZen:
api.ip-api.com
根據 IP 地址獲取用戶的城市、國家和幣種。api.frankfurter.com
獲取指定數量和貨幣價值的商品成本。以下是說明該場景的 GraphQL 請求和響應示例:
{
location(ip: "8.8.8.8") {
city
continent
country
countryCode
priceInCountry(amount: 100, from: "EUR")
}
}
{
"data": {
"location": {
"city": "Ashburn",
"continent": "North America",
"country": "United States",
"countryCode": "US",
"priceInCountry": 114.44
}
}
}
上述查詢在單一請求中檢索位置信息和貨幣信息,調用兩個 REST API 生成適當的響應。StepZen 架構使用貨幣轉換 API 將 priceInCountry
字段添加到位置響應中。開發者無需自行組合這些 API,可根據需求選擇檢索的字段,從而調整響應以滿足特定需求。
由于 StepZen 和 Apigee 都支持 API 管理,能夠自動化為 StepZen 端點創建 Apigee 代理的過程。創建了一個開源實用工具來完成此任務!若未擁有 StepZen 帳戶,實用工具將提供一個帳戶。該工具部署 StepZen 架構并自動為其構建 Apigee 代理。代理配置為需要 API 密鑰才能調用,并根據 StepZen 架構自動驗證 GraphQL 請求。
確保在 Apigee 中的帳戶擁有足夠的權限來創建和部署代理、API 產品、開發者、應用程序及屬性集。
git@github.com:apigee/stepzen.git
./apizenSetup -o <your_org> -e <your_env> -t $(gcloud auth print-access-token) -i $(gcloud auth print-identity-token) -z
盡管該腳本支持多種可選參數(詳見倉庫的自述文件),但默認情況下只需指定:
-o <您的 Apigee 組織/項目名稱>
-e <您的環境名稱>
-t <gcloud 令牌,需具備部署和創建所需 Apigee 工件的權限>
-i <gcloud 生成的身份令牌>
StepZen 使用這些參數生成單一但唯一的 StepZen 帳戶。-z
為可選項,若提供,腳本將輸出 StepZen 憑據,便于后續使用 StepZen 工具。 腳本運行多個步驟并實時輸出進度,包括:curl
命令(見下文)并顯示在安裝過程中創建的 API 密鑰。 若提供 -z
選項,腳本將輸出 StepZen 帳戶、管理密鑰和 API 密鑰。務必妥善保存這些信息,確保其安全。可將這些詳細信息保存為 YAML 文件(實際輸出為 YAML 格式),以便稍后與 StepZen 工具一起使用。腳本完成后,將看到示例 curl
命令,如下所示:
curl -X POST 'https://<apigee_environment_host>/graphql/stepzample?apikey=<APIKEY>' \
-H 'Accept-Encoding: gzip, deflate, br' -H 'Content-Type: application/json' -H 'Accept: application/json' \
--compressed -d @gql-query.json
此 curl
命令引用名為 gql-query.json
的文件,該文件包含上述示例中的相同 GraphQL 查詢。運行此 curl
命令將生成與示例中完全相同的輸出。可根據需要更新文件中的查詢,或復制并創建自定義查詢文件。
為了獲得更多功能,接下來將 Google 地圖集成到此 API 中。電子商務應用程序現在能夠向用戶顯示最近的實體店,用戶可在其中提取在線訂單并決定是否選擇送貨或提貨。
StepZen Maps Sample
文件夾,將文件 config.yaml.sample
重命名為 config.yaml
。config.yaml
文件,將 <apikey>
替換為獲取的密鑰。 configurationset:
- configuration:
name: google-maps
key: <apikey>
./apizenSetup -o <your_org> -e <your_env> -t $(gcloud auth print-access-token) -i $(gcloud auth print-identity-token) -S stepzen-maps-example -m maps
curl
命令測試新設置,指向存儲在 stepzen-maps-example
目錄中的 GraphQL 查詢。更新 curl
命令中的 apikey
和主機名,如下所示: curl -X POST 'https://<apigee_environment_host>/graphql/stepzample?apikey=<APIKEY>' \
-H 'Accept-Encoding: gzip, deflate, br' -H 'Content-Type: application/json' -H 'Accept: application/json' \
--compressed -d @stepzen-maps-example-gql-query.json
執行的查詢如下:
query MyQuery {
location(ip: "8.8.8.8") {
findNearby(keyword: "Target") {
name
vicinity
}
city
countryCode
regionName
}
}
查詢說明:
對于通過 Google DNS 進行的初始位置查詢返回的任何 IP,查詢將查找相對于緯度/經度最近的目標位置。隨后,將其傳遞給嵌入的 findNearby
,作為從初始查找中解析出的緯度和經度。StepZen 使用 Google Maps API 及在配置架構時提供的密鑰執行該操作。
結合查詢 api-ip-api.com
的能力,能夠增強用戶體驗,并在單一 GraphQL 查詢中獲取作為目標商店的最近物理商店位置。(假設用于取貨體驗,但可根據需求嘗試其他商店。)
原文鏈接:How to manage your GraphQL APIs with Apigee