實作自訂Server-Side REST 端點
適用于:Windows Azure Pack
伺服器端提供一組 REST API,由用戶端呼叫以擷取資料並執行作業。 這兩種類型的作業通常會在後端呼叫 以取得實際資料,或執行實際作業。 實作 API 的控制器通常是傳回 JSON 的 ASP.NET MVC 控制器,而後端通常是服務管理 API,但可以是可從 ASP.NET MVC 網站存取的任何其他服務。
重要
Hello World範例提供範例伺服器端實作。
用戶端和伺服器端都可以位於相同的Visual Studio專案中,並部署至相同的管理入口網站 () 。
Controller 類別
控制器類別是其中一個 ASP.NET MVC 標準抽象類別 Controller 或 AsyncController 的實例。 它通常會以 [RequireHttps] 屬性標示,以確保只允許安全連線、[OutputCache] 不允許快取回應,以及 [PortalExceptionHandler],如下列 處理錯誤 一節所述。 為防止網路釣魚攻擊,控制器中的方法會標示為 [HttpPost]。 這不允許 HTTP GET 要求,同時允許 HTTP POST 要求。 用戶端和伺服器端架構都不會對伺服器和用戶端彼此通訊的方式有任何限制,但用戶端與用戶端架構的方格小工具互動除外。 在此情況下,請參閱下列 傳回資料集一 節。
傳回資料集
資料集是由 UI 顯示的資料清單,通常是在方格檢視) (清單中。 不同于標準回復,用戶端架構會處理擷取它並將其顯示在方格中。 如果方法傳回資料集,通常會在 UI 中表示為清單,建議您使用 Controller.JsonDataSet 方法,如下列範例所示:
return this.JsonDataSet(listOfData);
這會自動將 listOfData 資料集包裝在適合用戶端架構處理的 JSON 包裝函式中。 如需用戶端實作的相關資訊,請參閱如何在 Azure Pack Management Portal 擴充功能Windows顯示方格。
執行命令
在控制器中執行命令的方法通常會傳回 JSON 物件,以顯示作業正常運作。 這可以像布林值表示成功一樣簡單,或與因作業而變更的資料一樣複雜。 不過,用戶端或伺服器端架構實際上不需要任何專案。
處理錯誤
控制器擲回的例外狀況通常必須向使用者顯示,以進行進一步的動作或後續操作。 若要在伺服器端執行這項操作,最簡單的方式是將 [PortalExceptionHandler] 屬性套用至您的類別。 入口網站Exception 類型的任何例外狀況都會轉譯為正確模型化的 JSON、設定適當的 HTTP 錯誤碼,並傳回至用戶端,以輕鬆顯示錯誤通知。在 [PortalExceptionHandler] 屬性發生錯誤時傳回的 JSON 範例如下:
{
"message": "Fake Error",
"ErrorMessage": "Fake Error",
"httpStatusCode": "InternalServerError",
"operationTrackingId": null,
"stackTrace": null,
}
任何其他類型的例外狀況都會顯示為空的 HTTP 500 錯誤,以避免向使用者公開內部詳細資料。此外,只有在延伸模組執行所在的入口網站已將 DevelopmentMode 設為 true 時,才會傳送堆疊追蹤。 這可以在管理入口網站的 web.config 檔案中變更。如需詳細資訊,請參閱 API 呼叫傳回之錯誤的 UI 一節。
另請參閱
Windows Azure Pack Management Portal 使用者介面擴充功能
如何在 Windows Azure Pack 管理入口網站擴充功能中顯示方格
Windows Azure Pack Management Portal 擴充功能偵錯