數據能夠經過多種方式來傳給API。 api
Binding Source Attributes 會告訴 Model 的綁定引擎從哪裏找到綁定源。 async
共有如下六種 Binding Source Attributes: ide
[FromBody] ui
請求的 Body spa
[FromForm] orm
請求的 Body 中的 form數據 xml
[FromHeader] 資源
請求的 Header 路由
[FromQuery] string
Query string 參數
[FromRoute]
當前請求中的路由數據
[FromService]
做爲 Action 參數而注入的服務
例如:
或:
默認狀況下ASP.NET Core 會使用 Complex Object Model Binder,它會把數據從Value Providers那裏提取出來,而Value Providers的順序是定義好的。
可是咱們構建API時一般會使用 [ApiController] 這個屬性,爲了更好的適應API它改變了上面的規則。更改後的規則以下:
[FromBody]
一般是用來推斷複雜類型參數的。
[FromForm]
一般用來推斷IFormFile和IFormFileCollection類型的Action參數。
[FromRoute]
用來推斷Action的參數名和路由模板中的參數名一致的狀況。
[FromQuery]
用來推斷其它的Action參數。
按照這些規則,在Action的參數前面使用這些屬性,就能夠避免讓咱們手動去尋找綁定源。當默認的行爲規則須要被重寫的時候,也可使用這些 Binding Source Attributes。
過濾集合的意思就是指根據條件限定返回的集合。
例如我想返回全部類型爲國有企業的歐洲公司。則URI爲:GET /api/companies?type=State-owned®ion=Europe
因此過濾就是指:咱們把某個字段的名字以及想要讓該字段匹配的值一塊兒傳遞給API,並將這些做爲返回的集合的一部分。
針對集合進行搜索是指根據預約義的一些規則,把符合條件的數據添加到集合裏面。
搜索實際上超出了過濾的範圍。針對搜索,一般不會把要匹配的字段名傳遞過去,一般會把要搜索的值傳遞給API,而後API自行決定應該對哪些字段來查找該值。常常會是全文搜索。
例如:GET /api/companies?q=xxx
能夠看出來過濾和搜索是不一樣的。
過濾:首先是一個完整的集合,而後根據條件把匹配/不匹配的數據項移除。
搜索:首先是一個空的集合,而後根據條件把匹配/不匹配的數據項往裏面添加。
過濾和搜索這些參數並非資源的一部分。
只容許針對資源的字段進行過濾。