在这篇文章中,我们将学习webapi如何将http请求数据绑定到一个操作方法的参数中。
操作方法在webapi控制器中可以有一个或多个不同类型的参数。它可以是基本数据类型或复杂类型。webapi根据url的查询字符串或请求主体中国最好的学校中参数类型来绑定操作方守在株边待兔来 (打一字)法的参数。
如果参数类型是基本数据类型(int,double,string,datetime,bool等),webapi默认将会从url中获取哄女人的甜言蜜语参数值(即通过querystring)获取。
如果参数类型的复杂类型,webapi默认从请求主体中获取参数值。
下表列出了webapi参数绑定的默认规则。
我们先来看看创建带mvc的webapi项目时自动生成的values控制器是如何定义的。
从values控制器的定义中,我们可以得出如下几个结论:
(1)webapi常规的方法有四个:get(),post(),put()和delete()。
(2)四种方法的参数可以归纳为两大类:url传递(request-url)和body(request-body)传递。
(3)可以将四种方法的参数传递归为两大类,而这两大类又集中在get和post中体现(put是get和post的组合,delete和get类型),所以说研究webapi的参数绑定,只需要研究get和post方法的参数传递即可,get对应request-url,post对应request-body。
在本篇文章中,客户端调用使用fiddler工具进行测试。
方法定义如下:
客户端调用
结果:
双击左侧的进程,得到如下的结果
方法定义如下:
url地址:http://localhost:63512/api/student?id=1有仙则名&&name=tom
结果如下:
方法定义如下:
客户端调用结果如下:
(1)查询字符串参数名称和操作方法参数名称必须相同(不区分大小写)。参数的先后顺序可以不水煮鱼的做法 最正宗的做法一致。
(2)get()参数传递的本质是url字符串拼接,但是url字符串的长度受限制。
(3)get()的参数支持基本数据类型,不支持实体数据类型。
(4)get()参数的传递是在http请求的头部传递,而不支持request-body传递。
(5)get类型的方法命名,尽量采用“get+方法名”的命名方式,在方法前面加上特性:[httpget]。
1、post参数传递是在request-body内传递。
2、post参数可以传递基本数据类型,也可以传递实体数据类型。
3、post操作方法只能包含一个实体数据类型,因为只能允许一个参数读取request-body中的数据。
4、post传递参数时,无论是基本类型参数还是实体类型,均需要借助[frombody]特性。(有些情况下不写[frombody]特性也可以把参数传递进来,但为了规范化,最好是加上该特性)。
5、post类型的方法命名,尽量采用“post+方法名”的命名方式,在方法前面加上特性:[httppost]。
在默认情况下,webapi是从查询字符串中得到基本数据类型参数的值,从请求主体中得到复杂类型参数的值,如果想改变这种默认情况怎么办?
可以使用[fromuri]属性,是webapi从查询字符串中获取复杂类型参数的值,使用[frombody]属性可以使webapi从请求主体中获取基本数据类型参数的值。
例如下面的get方法
get方法中包括复杂的类型参数,参数添加了[fromuri]属性,webapi将试图从查询字符串中得到student类型参数的值。
同样,参考下面的post方法:
webapi将从请求主体中获取基本类型参数的值,而不是从请求字符串中获取。
到此这篇关于asp.net中web api参数绑定的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。
本文发布于:2023-04-06 01:59:11,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/c0c515a17900b2896a3bc98d196b888e.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:ASP.NET中Web API的参数绑定.doc
本文 PDF 下载地址:ASP.NET中Web API的参数绑定.pdf
留言与评论(共有 0 条评论) |