日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WebAPI 2参数绑定方法

發布時間:2023/11/30 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebAPI 2参数绑定方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡單類型參數

Example 1: Sending a simple parameter in the Url

[RoutePrefix("api/values")] public class ValuesController : ApiController {// http://localhost:49407/api/values/example1?id=2[Route("example1")][HttpGet]public string Get(int id){return "value";} }

?

Example 2: Sending simple parameters in the Url

// http://localhost:49407/api/values/example2?id1=1&id2=2&id3=3 [Route("example2")] [HttpGet] public string GetWith3Parameters(int id1, long id2, double id3) {return "value"; }

?

Example 3: Sending simple parameters using attribute routing

// http://localhost:49407/api/values/example3/2/3/4 [Route("example3/{id1}/{id2}/{id3}")] [HttpGet] public string GetWith3ParametersAttributeRouting(int id1, long id2, double id3) {return "value"; }

?

Example 4: Sending an object in the Url

// http://localhost:49407/api/values/example4?id1=1&id2=2&id3=3 [Route("example4")] [HttpGet] public string GetWithUri([FromUri] ParamsObject paramsObject) {return "value:" + paramsObject.Id1; } ?

Example 5: Sending an object in the Request body

[Route("example5")] [HttpPost] public string GetWithBody([FromBody] ParamsObject paramsObject) {return "value:" + paramsObject.Id1; }

注意 [FromBody] 只能用一次,多于一次將不能正常工作

Calling the method using Urlencoded in the body:

User-Agent: Fiddler Host: localhost:49407 Content-Length: 32 Content-Type: application/x-www-form-urlencodedid1=1&id2=2&id3=3

Calling the method using Json in the body:

User-Agent: Fiddler Host: localhost:49407 Content-Length: 32 Content-Type: application/json{ "Id1" : 2, "Id2": 2, "Id3": 3}

?

Calling the method using XML in the body

This requires extra code in the Global.asax

protected void Application_Start() {var xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter;xml.UseXmlSerializer = true; The client request is as follows:User-Agent: Fiddler Content-Type: application/xml Host: localhost:49407 Content-Length: 65<ParamsObject><Id1>7</Id1><Id2>8</Id2><Id3>9</Id3></ParamsObject>

?

?

?

數組和列表(Array,List)

Example 6: Sending a simple list in the Url

// http://localhost:49407/api/values/example6?paramsObject=2,paramsObject=4,paramsObject=9 [Route("example6")] [HttpGet] public string GetListFromUri([FromUri] List<int> paramsObject) {if (paramsObject != null){return "recieved a list with length:" + paramsObject.Count;}return "NOTHING RECIEVED..."; }

Example 7: Sending an object list in the Body

// http://localhost:49407/api/values/example8 [Route("example8")] [HttpPost] public string GetListFromBody([FromBody] List<ParamsObject> paramsList) {if (paramsList != null){return "recieved a list with length:" + paramsList.Count;}return "NOTHING RECIEVED..."; }

?

Calling with Json:

User-Agent: Fiddler Content-Type: application/json Host: localhost:49407 Content-Length: 91[{"Id1":3,"Id2":76,"Id3":19},{"Id1":56,"Id2":87,"Id3":94},{"Id1":976,"Id2":345,"Id3":7554}]

Calling with XML:

User-Agent: Fiddler Content-Type: application/xml Host: localhost:49407 Content-Length: 258<ArrayOfParamsObject> <ParamsObject><Id1>3</Id1><Id2>76</Id2><Id3>19</Id3></ParamsObject> <ParamsObject><Id1>56</Id1><Id2>87</Id2><Id3>94</Id3></ParamsObject> <ParamsObject><Id1>976</Id1><Id2>345</Id2><Id3>7554</Id3></ParamsObject> </ArrayOfParamsObject>

?

Example 8: Sending object lists in the Body

[Route("example8")] [HttpPost] public string GetListsFromBody([FromBody] List<List<ParamsObject>> paramsList) {if (paramsList != null){return "recieved a list with length:" + paramsList.Count;}return "NOTHING RECIEVED..."; }

This is a little bit different to the previous examples. The body can only send one single object to Web API. Because of this, the lists of objects are wrapped in a list or a parent object.

POST http://localhost:49407/api/values/example8 HTTP/1.1 User-Agent: Fiddler Content-Type: application/json Host: localhost:49407 Content-Length: 185[[{"Id1":3,"Id2":76,"Id3":19},{"Id1":56,"Id2":87,"Id3":94},{"Id1":976,"Id2":345,"Id3":7554}],[{"Id1":3,"Id2":76,"Id3":19},{"Id1":56,"Id2":87,"Id3":94},{"Id1":976,"Id2":345,"Id3":7554}] ]

?

?

?

?

自定義參數

What if the default parameter binding is not enough? Then you can use the ModelBinder class to change your parameters and create your own parameter formats. You could also use ActionFilters for this. Many blogs exist which already explains how to use the ModelBinder class. See the links underneath.

?

文件和二進制

Files or binaries can also be sent to Web API methods. The article demonstrates how to do this.

?

參考

http://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/CustomParameterBinding/

http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

http://www.strathweb.com/2013/04/asp-net-web-api-parameter-binding-part-1-understanding-binding-from-uri/

http://www.roelvanlisdonk.nl/?p=3505

http://stackoverflow.com/questions/9981330/how-to-pass-an-array-of-integers-to-a-asp-net-web-api-rest-service

http://stackoverflow.com/questions/14628576/passing-an-json-array-to-mvc-web-api-via-get

轉載于:https://www.cnblogs.com/HQFZ/p/5871035.html

總結

以上是生活随笔為你收集整理的WebAPI 2参数绑定方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。