Restful API:把url当作资源,用http方法(get、post、put、delete)来表示对资源进行增删改成。(尽量不是用问号传参) 传统API:把url当作一个功能
设计一个获取用户信息的API: 传统API:/api/user/getUserMsg?id=10 RestfulAPI: /api/user/10 使用get方法
request header:
accept:浏览器能接收的数据格式accept-encoding:浏览器能接受的压缩算法。如gzipHost:发送请求的域名Content-type:当要向服务器发送数据的时候,表明数据的类型。如application/jsonConnection:keep-alive 表示一次tcp请求重复使用cookieUser-Agent:浏览器信息response header:
Content-type:表示返回数据的格式。如application/jsonContent-length:表示返回数据的大小Content-encoding:表示压缩数据的算法注:还可以自己自定义header
缓存:我们可以把一些没有必要重新获取的东西不再重新获取。 为什么要使用缓存:可以让我们浏览器打开页面的速度加快。
强缓存:客户端在第一次请求服务端的时候,服务器会返回对应的数据以及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不会变。