.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 码会自动进行编码转换,例如发送请求:www.lalalal.com?haha=哈哈    。

值得一提的是,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不同的是,在接受参数的时候必须要先建立一个实体类来接受参数,并且该实体类必须与前端的请求参数一模一样。

原文地址:https://www.cnblogs.com/t140603/p/10156954.html