RC版WebApi引數繫結

2022-01-17 11:49:54 字數 1235 閱讀 6188

之前看了寫的httpclient+webapi的乙個例子,參考他的**子階寫了乙個,結果請求服務獲取的引數都是空的,而將引數繫結在url中則可以正常得到引數,折騰好久,終於在網上找到了相關資料,原來rc版webapi在引數繫結上發生了些變化。

rc版的webapi引數繫結器分為兩種:

1.model binding

2.formatters

其中model binding僅從url中取值,這點是與mvc的model binding有區別的,

formatters是從request的body中取值,並且是把整個body作為乙個(不可為多個)物件解析為乙個引數。

/?id=123&name=bob   void action(int id, string name) // 兩個引數都是基本型別,則從url中獲取

/?id=123&name=bob   void action([fromuri] int id, [fromuri] string name) // 標記為fromuri的引數從url中獲取.

void action([frombody] string name); // 標記為frombody的引數從request的body中取值.

public class customer      

public int age

}

/?id=123   void action(int id, customer c) // id 從url獲取, c 是乙個自定義型別,從request的body中取值.

void action(customer c1, customer c2) // 這樣的寫法是錯誤的,從request的body中取值的引數只能有乙個

void action([fromuri] customer c1, customer c2) // 這樣是正確的, c1 從url獲取 、 c2 從request的body中取值

void action([modelbinder(mycustombinder)] sometype c) //指定乙個明確的模型繫結器使用來建立引數.

// 位置屬性型別宣告應用於所有的引數例項

[modelbinder(mycustombinder)]

public class sometype

void action(sometype c) // c的型別指定使用model binding.

到此,已經明白為什麼rc版下服務獲取引數為空了,也知道如何處理了。

alpha版 beta版 rc版的意思

很多軟體在正式發布前都會發布一些預覽版或者測試版,一般都叫 beta版 或者 rc版 特別是開源軟體,甚至有 alpha版 下面來解釋一下各個版本的意思。stable版 穩定版。在開源軟體中,都有stable版,這個就是開源軟體的最終發行版,使用者可以放心大膽的用了。另外,對於商業軟體,還有一下版本...

alpha版 beta版 rc版的意思

很多軟體在正式發布前都會發布一些預覽版或者測試版,一般都叫 beta版 或者 rc版 特別是開源軟體,甚至有 alpha版 下面來解釋一下各個版本的意思。stable版 穩定版。在開源軟體中,都有stable版,這個就是開源軟體的最終發行版,使用者可以放心大膽的用了。另外,對於商業軟體,還有一下版本...

alpha版 beta版 rc版的意思

很多軟體在正式發布前都會發布一些預覽版或者測試版,一般都叫 beta版 或者 rc版 特別是開源軟體,甚至有 alpha版 下面來解釋一下各個版本的意思。stable版 穩定版。在開源軟體中,都有stable版,這個就是開源軟體的最終發行版,使用者可以放心大膽的用了。另外,對於商業軟體,還有一下版本...