两种直观的印象1.浏览器打开一个http网页2.发送一个请求返回内容。Http: 超文本传输协议、通信协议、通信规则是一个应用层协议。工作方式htpp请求服务器服务器响应html浏览器渲染引擎显示。请求报文请求行 Headers Body服务器要处理的响应报文 状态行 Headers BodyHTTP的请求方法和状态码GET:获取资源没有Body 取数据所以没有Body。如果接口设计成GET也有Body则是不规范的Retrofit是会报参数异常错的POST增加或者修改资源一定有Body的不具有幂等性即每次修改是新增一条数据PUT只修改资源有Body的想修改使用Post和Put都可以看web接口怎么设计具有幂等性每次只会修改同一条数据DELEETE删除资源没有Body的因为只要路径定位到就可以了不需要Body具有幂等性HEAD和GET的区别GET响应是有Body的HEAD是没有Body的作用用来获取信息比如下载的时候先获取资源信息后续再GET方式下载。状态码1xx临时性消息2xx成功3xx 重定向 一般是服务器资源迁移了4xx客户端错误 服务器认为没有的5xx 服务器错误 很确定是服务端问题Http的Header和BodyHeader作用Http消息的元数据metadata元数据就是表示数据的数据、辅助数据、数据的属性Host api.github.com (这里并不是用来定位服务器的因为定位是在请求前通过DNS域名查询ip定位iel这里Host作用是给目标主机看的因为目标主机可能运行了多个虚拟主机)Content-Type类型text/html: Body是html文本用于浏览器页面的响应application/x-www-form-urilencoded:普通表单即纯文字表单encoded URL格式。比如账密输入框提交的是普通表单用划分的。其他传的是文件或者二进制用的是特殊boundary分界字符串但是分界同时会增加性能的损耗。汇总的ContentType: json格式方便扩展和直接转换成json对象Content-Length: 长度Transfer-Encoding: chunked 分块传输Location重定向User-Agent: 用户代理谁去发起请求也就是客户端可以区分是手机还是pcRange/Accept-Ranges: 支持分段加载 比如图片能不能分段加载是要看服务器支不支持的即有这个字段可以分段获取Cookie/Set-Cookie: 发送cookie/设置cookieAuthrization授权信息Cache缓存 缓存可能重复用到的数据Buffer 缓冲 待处理的数据上游生成太快、下游消费太慢稍后处理也可能是预备着在下游高峰时可以应对其他keyRestful HTTP到底是什么并不是协议而是只是一个风格。正确使用Http就是Restful http。其实是后端的事情要设计好接口。客户端按照接口设计来调用即可。