转自:天蓝色空
cnblogs.com/zhan520g/p/10303225.html
前言
详细关注我们常用的Get和Post请求(取Http[动词] of。NET Core 2.2为方向,推荐这个属性路由)。如果要验证,可以直接使用VS2017创建ASP.NET核心API(。net core 2.2)并在DefaultController中操作它。
帮忙回忆一下,Get和Post有什么区别?
get参数通过url传递,post放在request body中。get请求在url中传递的参数是有长度限制的,而post没有。get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。get请求只能进行url编码,而post支持多种编码方式。get请求浏览器会主动cache,而post不会。get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留。get和post质上就是tcp链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。get产生一个tcp数据包;post产生两个tcp数据包。对于get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于post,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。据此设置,相应的结果如下:
带参数的请求
1.默认模式
如果只使用id获取一条数据,可以实现如下图所示。这样,请求路径的操作就简单了。访问路径:api/values/id。大括号中的{}名称必须与参数名称一致。
如上所示,无法满足get的多个参数请求模式。如果有多个参数并且使用了get请求,则需要返回到旧的例程,如下图所示:
2.路由模板设置
同样,新的路由模板只需要携带方便请求的简单参数nameid,大括号中的{}名称必须与参数名称一致。
上图无法满足新路由模板get的多参数请求模式。如果有多个参数并且使用了get请求,则需要返回到旧的例程,如下图所示:
发布请求
没有参数请求
1.默认模式
如下图所示,因为请求路径是/api/values,所以整个控制器将寻找Post请求
请求路径:/API/[控制器]
但是,如果此时有另一个Post方法,并且新模板没有重命名,那么无论是否有参数,都会报错。api/values请求路径将只找到POST请求模式。因此,应进行以下路由模板设置
2.路由模板设置
与httpGet请求模式下的路由模板设置相同,也可以设置三个参数:模板、名称和顺序,后两个是可选的。
请求路径:/api/values/PostMethod
带参数的请求
1.默认模式
尝试了很多方法,最后发现以下可行,请求路径:/api/[controller]
Ajax和邮差请求都需要内容类型:“application/x-www-form-URL encoded”,重点是不能被【ApiController】和【FromBody】修改(暂时不评论,我觉得还是用Get比较好)。
Ajax请求代码如下:
$.ajax({
键入:“开机自检”,
接受:" application/x-www-form-URL encoded ",
url: "/api/post ",
content type:" application/x-www-form-URL encoded ",
数据:{
值':'张三丰'
},
错误:函数(jqXHR,textStatus,error through){
警惕(“出问题了!”);
},
成功:函数(结果){
}
});
2.路由模板设置
与httpGet请求模式下的路由模板设置相同,也可以设置三个参数:模板、名称和顺序,后两个是可选的。
请求路径:/api/[controller]/PostName
3.组合参数请求
如果同时存在复杂类型参数和简单类型参数,该怎么办,如下图:
此时,请求控制器必须具有显示属性[ApiController]。请求如下:
请求路径:/api/todo?名称=小明& ampid=20
4.动态类型
如下图所示,支持动态类型参数,content type:“application/JSON”
请求路径:/api/todo
总结
欢迎讨论,欢迎讨论,欢迎指出不准确之处,欢迎一起学习!我们也鼓励大家认真写博客,巩固自己和他人。
1.《get请求 ASP.NET Core API 的Get和Post请求详解》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《get请求 ASP.NET Core API 的Get和Post请求详解》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/tiyu/1043516.html