.net core MVC接受来自自前端的GET和POST请求方法的区别
小伙伴们都知道,常用的http请求有两种方式,即get方法和post方法,很多刚入门的童鞋难免都会有一个误区,是不是get是从服务器上获取数据,post是向服务器传送数据?
我的理解是:不论是get还是post,都是向服务器提交数据,并且请求之后都会从服务器获取数据,两者的区别仅是传送方式不同而已,get通过地址栏传输,post通过报文传输。对资源的增删改查操作其实都可以通过get/post方法来实现,下面就详细介绍一下这两种方法:
一、请求原理以及方式:
1、get 请求
get请求不存在请求实体部分,键值对参数放置在 url 尾部,浏览器把form数据转换成一个字串(name1=value1&name2=value2...),然后把这个字串追加到url后面,用?分割,加载这个新的url。因此请求头不需要设置 content-type字段。
非 ascii 码会自动进行编码转换,例如发送请求:哈哈 。
值得一提的是,get 参数的编码方式是无法人为干涉的,这导致了不同浏览器有不同的编码方式,因此最稳妥的方案是人工预编码,人工解码,从而禁止浏览器编码的干涉。
2、post 请求
post把提交的数据则放置在是http包的包体中。http header里的content-type一般有好几种方式,但是我自己接触到的是以下两种方式:
a) application/x-www-form-urlencoded:数据被编码为名称/值对。这是标准的编码格式。浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。会将表单内的数据转换拼接成 key-value 对(非 ascii 码进行编码)
b) application/json:由于json 格式支持比键值对复杂得多的结构化数据,这一点现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 json 字符串。本文就是重点介绍这种方式。
二、后端获取参数的方式
对于后台接受来自前台的请求时,且content-type为application/json时,可以传递参数也可以不传递参数,但是多数情况下是需要有参数传来的,所以,下面就只介绍有参数传过来的情形:
1、获取get参数 get:([fromquery] user user)
[fromquery]是告诉模型绑定在解析的过程中从httpcontext中那一部分获取信息。
2、获取post参数 post:([(frombody)] user user)
[frombody] 是参数绑定的过程中,告诉框架该参数是使用配置过的格式化程序从http body 中解析。和get不同的是,在接受参数的时候必须要先建立一个实体类来接受参数,并且该实体类必须与前端的请求参数一模一样。
上一篇: JS: 数组扁平化
下一篇: 揭秘:AI视频面试背后的黑科技