HTTP
webservice = http + xml
Rest = Http + JSON
各种API也一般是使用http+XML/JSON来实现的
学了HTTP之后,学ajax很好理解。
协议
计算机中的协议和现实中的协议是一样的,一式双份/多份,双份/多方都遵从共同的规范,这个规范就可以称为协议。
计算机之所以能让全世界互通,协议是功不可没的,计算机如果各说不一,那么根本谁都听不懂谁。
协议比如:ftp、http、tcp、ip等
什么是http协议
HTTP请求信息和响应信息格式
1、请求
- 请求行
- 请求头
- 请求空行
- 请求体
请求行
请求行又分为三部分:
- 请求方法:GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS
HEAD和GET基本一致,只是不返回内容,可能只需要返回状态等,不需要返回内容即没有响应体。
TRACR:是你用了代理上网,比如用代理访问www.163.com,你想看看代理有没有修改你的HTTP请求,可以用TRACE测试一下,163服务器会把最后收到的请求返回给你看。
OPTIONS返回服务器可用的请求方法
这些请求方法虽然在HTTP协议里面规定了。但是WEB服务器未必允许或者支持这些方法 - 请求路径
- 所用的协议
比如:POST /hello HTTP/2.0
GET请求没有请求体,在url后面。POST请求有请求体。
请求头
格式为key:value
包含主体长度等信息Content-type,不然对方不知道要收多少数据。
Content-Type是指http/https发送信息至服务器时的内容编码类型,contentType用于表明发送数据流的类型,服务器根据编码类型使用特定的解析方式,获取数据流中的数据。
在网络请求中,常用的Content-Type有如下:
- text/html, text/plain, text/css,text/javascript, image/jpeg, image/png, image/gif,
application/x-www-form-urlencoded, multipart/form-data, application/json, application/xml 等。 - 其中:text/html, text/plain, text/css, text/javascript, image/jpeg, image/png, image/gif, 都是常见的页面资源类型。
- application/x-www-form-urlencoded, multipart/form-data, application/json, application/xml 这四个是ajax的请求,表单提交或上传文件的常用的资源类型。
POST的时候使用的是application/x-www-form-urlencoded。
不包含主体长度就无法知道获得多少数据,不包含Context-Type就不知道使用什么进行解析。
2、响应
- 响应行:
- 响应头:
- 响应空行:
- 响应体:
响应行
- 协议版本
- 状态码
- 状态文字
HTTP/2.0 200 OK
状态码:用来反映服务器响应情况的。
最常见的:200 OK、404 NOT FOUND
状态文字是用来描述状态码的,便于人的观察。
200-服务器成功返回网页
301/302-永久/临时重定向,重定向会丢失数据,使用307不会丢失数据,保持原有的数据。
304 NOT MODIFIED-未修改,可以尝试从缓存中取,客户端会发给服务器时间戳和ETag,会和服务器的时间戳和ETag进行比较,如果在这个之后没修改就从缓存中拿
响应头
格式为key:value
如:Content-type:text/html