一、http报文格式:
HTTP的请求报文包括:请求行(request line)、请求头部(header)、空行 和 请求数据(request data) 四个部分组成。
请求行包括: 请求方法,URL(包括参数信息),协议版本这些信息(GET /admin_ui/rdx/core/images/close.png HTTP/1.1)
请求头部(Header)是一个个的key-value值,比如
- Accept-Encoding: gzip, deflate
- User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)
空行(CR+LF):请求报文用空行表示header和请求数据的分隔
请求数据:GET方法没有携带数据, POST方法会携带一个body
详细解释访问:https://blog.csdn.net/zx_emily/article/details/83024065
二、http请求分类
HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。本篇文章我们只介绍POST和GET.主要从POST和GET的区别上介绍。
1、请求方式:
GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头<request-line>中),以?分割URL和传输数据,多个参数用&连接;例如:login.action?name=hyddd&password=idontknow;GET提交的数据会在地址栏中显示出来;
POST提交:把提交的数据放置在是HTTP包的包体<request-body>中;而POST提交,地址栏不会改变
2、数据长度:
GET数据长度:因为特定的浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。因此对于GET提交时,传输数据就会受到URL长度的限制。
POST数据长度:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置,比如后台采用tomcat时,如果数据过长,超过了tomcat的长度限制就会报错。
3、安全性:
POST的安全性要比GET的安全性高。
三、@RequestParam和@RequestBody
我们了解了http的格式和请求方式以后,来看看@RequestParam和@RequestBody。
这两个注解主要时用来区分后台采用什么方式接受前端参数的,之所以跟http请求放到一块,是希望更深刻的理解各种请求方式和对应的参数接受方法。
详细访问这一篇:https://blog.csdn.net/nihaoa50/article/details/86293715。
还有这一篇:https://blog.csdn.net/weixin_38004638/article/details/99655322
四、URL详解:
https://www.cnblogs.com/yaoteng/p/11171039.html
五、总结:
1、后台使用注解:
GET:参数放到URL中,后台使用@RequestParam接收。GET请求不能用@RequestBody来接收参数(不严谨,符合绝大部分情况)
POST:区分header类型,这里只分析两种类型。
(1). application/x-www-form-urlencoded(默认类型)
如果不指定其他类型的话, 默认是x-www-form-urlencoded
, 此类型要求参数传递样式为 key1=value1&key2=value2
(2). application/json
更适合传递大数据的形式, 参数样式就是json格式, 例如{"key1":"value1","key2":[1,2,3]}
等.
2、不使用注解的情况:
(1)前端以form表单的形式提交数据:
—后端可以使用一下方式接收数据:
①对象
(不需要加注解,属性名和前端参数名一致)
②Map
(不需要加注解,属性名和前端参数名一致)
③基本类型
(添加@RequestParam("")注解,不加注解底层通过IO流读取磁盘中class文件,反编译获取属性名,效率极低)
④集合
(添加@RequestParam("")注解)
(2)ajax发送请求与后台接收
https://www.cnblogs.com/ooo0/p/10535278.html
如果感觉那么复杂,记不住,直接来这个,通吃!!!
https://blog.csdn.net/Xiaowu_First/article/details/94363183
持续更新...