本文將概述如何在WebAPI模式下將參數綁定到壹個動作方法,包括參數如何讀取,以及壹系列規則決定了在特定環境下采用的綁定方法。最後,文章將給出壹些實例。
畢竟,參數綁定是接收壹個Http請求,並將其轉換成。NET類型使操作方法的簽名更容易理解。
請求消息包括請求的所有信息,例如帶有查詢字符串的請求地址(URL)、內容體和頭信息。沒有參數綁定。
在的情況下,每個操作方法都需要接收請求消息並從中手動提取參數,如下所示:
公共對象my action(http request message request){//進行顯式調用,從請求對象int id = int中獲取參數。解析(請求。RequestUri.ParseQueryString()。get(" id "));//需要錯誤邏輯!客戶c =請求。Content.ReadAsAsync()。結果;//應該是異步的!//現在使用id和客戶}
顯然,這種方式很難看,容易出錯,重復,並且難以進行單元測試。我們希望動作的簽名如下所示:
公共對象MyAction(int id,Customer c) { }
那麽WebAPI如何將請求消息轉換成id和customer這樣的參數呢?
模型綁定與格式化程序
參數綁定有兩種技術:模型綁定和格式化程序。事實上,WebAPI使用模型綁定讀取查詢字符串的內容進行參數綁定,使用格式化程序讀取主要內容。
(正文內容)來綁定參數。
使用模型綁定:
這個概念在ModelBinding和MVC中是壹致的。更多詳情請見此處。通常有壹個“ValuePeoviders”提供查詢字符串參數等數據片段,model binder將這些片段組合成壹個對象。
使用格式化程序:
格式化程序(如MediaTypeFormatter類所示)實際上是包含額外元數據的序列化程序。WebAPI從HttpConfiguration獲取格式化程序列表,然後傳遞請求信息。
鍵入內容以確定適當的格式化程序。WebAPI有許多默認的格式化程序。默認的JSON格式化程序是JSON.NET。還有Xml格式化程序和JQuery語法
FormUrl格式化程序.
格式化程序的核心方法是mediatypeformatter。readfromstreamsync,如下圖所示:
公共虛擬任務..