練習 - 在 API 管理中從函數應用程式建立新 API
若要將 Azure Functions 作為單一 API 的一部分呈現給使用者,您可以將其新增至 Azure API 管理。
在您的線上商店公司中,您的開發人員已建立多個 Azure Functions 作為微服務。 每個函式都執行商店功能的一小部分。 您想要將這些函式組合成單一 API。
在此練習中,您會建立新的 API 管理執行個體,然後在其中新增產品詳細資料函式。
建立函數
在以下步驟中,您會將 Azure 函數應用程式新增至 Azure API 管理。 稍後,您會將第二個函數應用程式新增至相同的 API 管理執行個體,以從多個函式建立單一無伺服器 API。 讓我們從使用指令碼建立函式開始:
若要複製函式專案,請在右邊的 Azure Cloud Shell 中執行下列命令。
git clone https://github.com/MicrosoftDocs/mslearn-apim-and-functions.git ~/OnlineStoreFuncs
在 Cloud Shell 中執行下列命令,以設定我們在此練習中所需的 Azure 資源。
cd ~/OnlineStoreFuncs bash setup.sh
setup.sh
指令碼會在為此課程模組啟用的沙箱資源群組中建立兩個函數應用程式。 如下圖所示,每個應用程式會裝載單一函式:OrderDetails
與ProductDetails
。 該指令碼也會設定函式的儲存體帳戶。 這些函式都有在 azurewebsites.net 網域中的 URL。 為了具有唯一性,函式名稱包含隨機數字。 指令碼需要幾分鐘才能完成。
測試 ProductDetails 函式
現在,讓我們來測試 ProductDetails 函式,以在將它新增至 API 管理之前,先查看其行為。
使用啟用沙箱時所用的相同帳戶來登入 Azure 入口網站。
在 Azure 入口網站功能表上,或從 [首頁] 頁面,選取 [所有資源]。 [所有資源] 窗格會隨即出現。
選取名稱開頭為 ProductFunction 的函數應用程式。 [函數應用程式] 窗格隨即出現,並已選取 [概觀] 索引標籤。
從函數應用程式的函式清單中,選取 [ProductDetails]。 [ProductDetails] 函式窗格隨即出現。
在 [ProductDetails] 功能表的 [開發人員] 下,選取 [程式碼 + 測試]。 ProductDetails 函式的 [程式碼 + 測試] 窗格隨即出現,其中顯示
function.json
檔案的內容。在命令列上,選取 [測試/執行]。 [輸入]/[輸出] 窗格隨即出現,以便測試您的 HTTP 要求。
在 [輸入] 索引標籤的 [HTTP 方法] 欄位下拉式清單中,選取 [GET]。
在 [查詢] 下,選取 [新增參數]
在 [名稱] 欄位中輸入 id,並在 [值] 欄位中輸入 3,然後選取 [執行]。
記錄窗格隨即出現,以便連線要求。 [輸出] 索引標籤會顯示 HTTP 回應碼 (200 OK),以及資料庫中項目 3 的內容。
或者,您也可以輸入識別碼值 1 和 2 來測試函式。
選取 [關閉] 以關閉 [程式碼 + 測試] 的 [輸入]/[輸出] 索引標籤。
在 ProductDetails [程式碼 + 測試] 窗格的命令列上,選取 [取得函式 URL]。 請注意,URL 子網域是函數應用程式的名稱,後面接著 azurewebsites.net 網域。
注意
您可以使用此 URL 在瀏覽器中測試函式。 URL 需要輸入;請附加查詢字串 &id=1
,以要求產品集合中第一個項目的詳細資料。
使用 Azure API 管理將函數應用程式公開為 API
部署並測試函數應用程式之後,讓我們使用 Azure API 管理將其匯出為 API,以便從其他應用程式和服務進行呼叫。
在資源功能表中,選取 [所有資源]。 [所有資源] 窗格會隨即出現。
依類型來排序資源清單。 請注意,您有 OrderFunction 應用程式和 ProductFunction 應用程式。
選取 [ProductFunction] 函數應用程式。
在 [函數應用程式] 功能表中,捲動至 [API] 類別,然後選取 [API 管理]。 ProductFunction 函數應用程式的 [API 管理] 窗格隨即出現。
在 [API 管理] 欄位下,選取 [新建]。 [安裝 API 管理閘道] 窗格隨即出現。
針對每個設定輸入下列值。
設定 值 訂用帳戶 指引訂用帳戶 資源群組 [沙箱資源群組名稱] 區域 選擇支援取用方案的位置:[(美國) 美國西部]、[美國中北部]、[西歐]、[北歐]、[東南亞]、[澳洲東部] 資源名稱 OnlineStore 組織名稱 OnlineStore 管理員電子郵件 輸入電子郵件地址。 定價層 消耗(99.95% SLA) 選取 [下一步: 監視] 並清除 [Application Insights] 選項。
選取 [檢閱 + 建立] 。 驗證完成時,選取 [建立] 以建立連結的 API 管理執行個體。 稍候片刻,等待匯出完成。
部署 API 管理執行個體之後,請選取 [連結 API]。
[匯入 Azure Functions] API 管理服務窗格隨即出現,其中已醒目提示 ProductDetails 函式。
選取 [選取] 以繼續。 [從函數應用程式建立] 對話方塊會隨即出現。
將 [API URL 尾碼] 值變更為 products,然後選取 [建立]。 Azure 會為 ProductDetails 函式建立 API。 函數應用程式 [API 管理] 窗格的 [設計] 索引標籤隨即出現。
此練習顯示您能夠全部透過 Azure 函數應用程式服務來定義 API。
測試 OnlineStore 產品端點
在您建立的 API 管理執行個體中,您現在已有 ProductDetails
API。 讓我們使用 Azure 中的 API 管理工具測試該 API。
在函數應用程式的 [API 管理] 窗格中,選取 [測試] 索引標籤。API 的可用作業隨即出現在左欄中。
選取 [GET ProductDetails]。 ProductDetails 主控台窗格隨即出現。
在 [查詢參數] 底下,選取 [新增參數]。
在 [名稱] 欄位中輸入 id,並在 [值] 欄位中輸入 1,然後選取 [傳送] 以產生 GET 要求。
主控台的 [HTTP 回應] 區段有兩個索引標籤:[訊息] 和 [追蹤]。 [訊息] 索引標籤會填入 HTTP 回應。 產品詳細資料會在回應結尾以 JSON 格式顯示。 向上捲動至 [HTTP 要求] 區段,並注意要求的格式。 要求已傳送至 azure-api.net 網域中的目的地。 此位置與裝載函數應用程式的 azurewebsites.net 網域不同。 您可以使用其他查詢參數來測試此 API,例如 id=2 或 id=3。