1 什么是HTTP请求
HTTP的定义是超文本传输协议,是一种网络传输协议,位于协议族的应用层中。
2 请求报文
请求报文包括三个部分,第一部分是请求行,第二部分是Headers,第三部分是Body。
2.1 请求行
请求行包括三个部分,第一个是方法。常见的有get,post,put,delete。第二个是路径,也就是服务器地址后面的部分,比如 https://mp.youkuaiyun.com/users,这个users就是路径,第三个是http的版本,当前的主流版本是http 1.1。具体格式如下,
GET /users HTTP/1.1
2.1.1 请求方法
请求方法主要有四种,其中开发中用的最多的是get和post,另外还有put和delete。其中,get用在获取资源,并且它是没有Body的。post用在添加或修改资源,发送的内容写在Body里面。put和post比较相似,唯一的不同点是put只能用在修改资源,而post比它更为广泛,不仅可以用于修改资源,还可以用于添加资源。从这点上讲,put能做的post都能做。最后一个是delete,delete用在删除资源,也是不发送Body的。
另外,除了post外,其它三个都是幂等的。那么,什么是幂等呢,就是这个操作,操作一次或者操作多次,结果是一样的。比如你发送某个请求,获取一次资源或者获取多次资源,结果是一样的。其实,这个东西挺简单的,想明白了就懂了,你把一个东西从1修改成2,它是2,你再修改成2,它还是2。所以get,put和delete是幂等的。
2.2 Headers
Headers有很多,这里只介绍一些常用的。 Content-Type:内容的类型,常见的有 text/html ---- 用于浏览器间响应 x-www-form-urlencoded ---- 纯⽂本表单的提交⽅式 multitype/form-data ---- 含有⼆进制⽂件时的提交⽅式 application/json ---- json格式
Content-Length:指定 Body 的⻓度(字节)
Location:指定重定向的⽬标 URL
User-Agent:⽤户代理,即是谁发送或接受响应的,可以用来区分浏览器发送的请求还是手机发送的请求。
3 响应报文
响应报文也包括三个部分,第一部分是状态行,第二部分是Headers,第三部分是Body。
3.1 状态行
状态包括三个部分.第一个是http版本,常用的还是1.1。第二个是状态码,常见的有200,表示成功,404,表示找不到内容。第三个是状态信息。具体格式如下,
HTTP/1.1 200 OK
3.1 状态吗
1xx:临时性消息。如:100 (继续发送) 2xx:成功。最典型的是 200(OK)、201(创建成功) 3xx:重定向。如 301(永久移动)、302(暂时移动) 4xx:客户端错误。如 400(客户端请求错误)、404(找不到内容) 5xx:服务器错误。如 500(服务器内部错误)
到此,请求报文和响应报文的一些基础知识已经介绍完毕了。