HTTP知识点
1.http状态码
1.1状态码的五种类型
- 1xxx:表示服务器收到请求
- 2xxx:表示请求成功
- 3xx:表示重定向
- 4xx:表示客户端错误
- 5xx:表示服务端错误
1.2常见的状态码
- 200:客户端发送给服务端的请求被成功处理并返回
- 301:永久重定向。浏览器会把跳转后的地址缓存下来,下一次就不必发送这个请求了,直接跳转。永久重定向一般用于旧的域名跳到新的域名这些。
- 302:临时重定向。浏览器不会缓存跳转后的地址,下一次还是会发送这个请求,因为不知道下一次还需不需要继续跳转,它只是临时重定向。临时重定向一般用于未登陆的用户访问用户中心重定向到登录页面。
- 304:资源未被修改。
- 404:服务器无法找到请求的资源
- 403:服务器拒绝这次方法,权限不够
- 500:服务器错误
- 503:服务器暂时处于超负载或正在进行停机维护,现在无法处理请求
2.什么是Restful API
Restful API:把url当作资源,用http方法(get、post、put、delete)来表示对资源进行增删改成。(尽量不是用问号传参)
传统API:把url当作一个功能
设计一个获取用户信息的API:
传统API:/api/user/getUserMsg?id=10
RestfulAPI: /api/user/10 使用get方法
3.常见的header
3.1 header的类别:
request header:
- accept:浏览器能接收的数据格式
- accept-encoding:浏览器能接受的压缩算法。如gzip
- Host:发送请求的域名
- Content-type:当要向服务器发送数据的时候,表明数据的类型。如application/json
- Connection:keep-alive 表示一次tcp请求重复使用
- cookie
- User-Agent:浏览器信息
response header:
- Content-type:表示返回数据的格式。如application/json
- Content-length:表示返回数据的大小
- Content-encoding:表示压缩数据的算法
注:还可以自己自定义header
4.http的缓存
缓存:我们可以把一些没有必要重新获取的东西不再重新获取。
为什么要使用缓存:可以让我们浏览器打开页面的速度加快。
4.1 缓存的类别:
强缓存:客户端在第一次请求服务端的时候,服务器会返回对应的数据以及cache-controll这个响应头,数据会被缓存下来。例如:cache-controll的值是max-age=1000,表示在1000秒之内,不用再向服务器请求数据,而是直接再本地读取。在过了1000s之后,再请求这个资源的时候,就需要向服务器重新发送请求,返回对应的数据和cache-controll。
cache-controll:这个响应头的值一般是max-age=xxx秒或者no-cache。max-age表示缓存的过期时间,单位是秒。no-cache是不走强制缓存,但是可能会走协商缓存。
协商缓存(对比缓存):第一次请求数据的时候,服务器会返回数据以及资源标识,下次请求的时候,就会带着之前的资源标识过去,与服务端的进行对比,如果一样,就返回状态码304,读取本地的缓存;如果不一样,就返回新的数据以及新的资源标识。
response返回的header资源标识有两种:
- Last-Modified:表示资源的最后修改时间。
- Etag:表示资源的唯一标识。(一个字符串)
request header请求携带的资源标识:
- If-Modified-Since:就是客户端发送过来的资源最后修改时间。跟Last-Modified相对应
- If-None-Match:就是客户端发送过来的资源的唯一标识(一个字符串)。跟Etag相对应
注:在协商缓存中,如果同时存在Last-Modified和Etag,应该以Etag为准,因为你有可能按了两次保存,最后修改时间变了,但是里面的内容没有变。Last-Modified就会改变,但是Etag不会变。