熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

WebAPI下的如何實現參數綁定

2013-11-13 10:09:39  來源: .NET編程 

  本文將概述在WebAPI方式下將如何將參數綁定到一個action方法包括參數是如何被讀取一系列規則決定特定環境采用的那種綁定方式文章最後將給出一些實際的例子

  Parameter binding說到底是接到一個Http請求將其轉換成NET類型使得action方法的簽名更易於理解

  請求消息(request message)包括了請求的所有信息如帶查詢字符串的請求地址(URL)內容主體(content body)及頭部信息(header)在沒有采用parameter binding

  的情況下每個action方法將需要接收request message並手動從中提取出參數如下所示

  public object MyAction(HttpRequestMessage request){ // make explicit calls to get parameters from the request object int id = intParse(requestRequestUriParseQueryString()Get(id)); // need error logic! Customer c = requestContentReadAsAsync()Result; // should be async! // Now use id and customer}

  很顯然這樣的方式丑陋易出錯代碼重復而且難以單元測試我們希望action的簽名類似以下的形式

  public object MyAction(int id Customer c) { }

  那麼WebAPI是如何將request message轉換成像id和customer這樣的參數的呢?

  Model Binding vs Formatters

  參數綁定有兩種技術Model Binding和Formatters實際上WebAPI使用model binding讀取查詢字符串(query string)內容進行參數綁定使用Formatters讀取主體內容

  (body content)進行參數的綁定

  Using Model Binding:

  ModelBinding和MVC中的此概念是一致的更多內容見Here通常有一個ValuePeoviders提供數據片斷如查詢字符串參數model binder將這些片斷組合成一個對象

  Using Formatters

  Formatters(如MediaTypeFormatter類所示)實際上是包含額外元數據的序列化程序WebAPI從HttpConfiguration中獲取一個formatters的列表然後通過request信息

  中的contenttype來判斷采用具體合適的formatterWebAPI有不少默認的formatters默認的JSON formatter是JSONNET還有Xml formatter和采用JQuery語法的

  FormUrl formatter

  其中Formatters的核心方法是MediaTypeFormatterReadFromStreamAsync如下所示

  public virtual Task


From:http://tw.wingwit.com/Article/program/net/201311/12750.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.