http面试题
- 前端工程师开发界面
- 需要调好后端的接口,提交/获取 数据-------http协议
- 要求事先掌握好ajax
http常见的状态码有哪些?
临时响应
100——客户必须继续发出请求
101——客户要求服务器根据请求转换HTTP协议版本
成功
200——服务器成功返回网页
201——提示知道新文件的URL
202——接受和处理、但处理未完成
203——返回信息不确定或不完整
204——请求收到,但返回信息为空
205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
206——服务器已经完成了部分用户的GET请求
重定向
300——请求的资源可在多处得到
301——删除请求数据
302——在其他地址发现了请求数据
303——建议客户访问其他URL或访问方式
304——客户端已经执行了GET,但文件未变化
305——请求的资源必须从服务器指定的地址得到
306——前一版本HTTP中使用的代码,现行版本中不再使用
307——申明请求的资源临时性删除
请求错误
400——错误请求,如语法错误
401——请求授权失败
402——保留有效ChargeTo头响应
403——请求不允许
404——请求的网页不存在
状态码分类
- 1.。。服务器收到请求
- 2.。。请求成功
- 3。。重定向
- 4.。。客户端错误,如:404
- 4.。。服务器错误,如500
传统的methods
- get 获取服务器的数据
- post像服务器提交数据
- 简单的网页功能,就这两个操作
现在的methods - get获取数据
- post新建数据
- patch/put更新数据
- delect删除数据
Restful API
- 一种新的API设计方式(早已推广使用)
- 传统API设计:把每个url当做一个功能
- Reatful API设计:把每个url当做一个唯一的资源
如何设计成一个资源
- 尽量不要url参数:传统设计:/api/list?pageIndex=2
http headers
- 常见的Request Headers
- 常见的 Response Headers
-演示
Request Headers
- Accept 浏览器可接受的数据格式
- Accept-Encoding 浏览器可就收的压缩算法,如gzip
- Accept-Languange浏览器可接收的语言,如zh-CN
- User-Agent(简称UA)浏览器信息
- Content-type 发送数据的格式,如application/json
- Content-Encoding返回数据的压缩算法,如gzip
关于缓存
http缓存指的是: 当客户端向服务器请求资源时,会先抵达浏览器缓存,如果浏览器有“要请求资源”的副本,就可以直接从浏览器缓存中提取而不是从原始服务器中提取这个资源。
常见的http缓存只能缓存get请求响应的资源,对于其他类型的响应则无能为力,所以后续说的请求缓存都是指GET请求。
缓存都是从第二次请求开始的。第一次请求资源时,服务器返回资源,并在respone header头中回传资源的缓存参数;第二次请求时,浏览器判断这些请求参数,命中强缓存就直接200,否则就把请求参数加到request header头中传给服务器,看是否命中协商缓存,命中则返回304,否则服务器会返回新的资源。
强制缓存
强制缓存整体流程比较简单,就是在第一次访问服务器取到数据之后,在过期时间之内不会再去重复请求。实现这个流程的核心就是如何知道当前时间是否超过了过期时间。
协商缓存
协商缓存都是由服务器来确定缓存资源是否可用的,所以客户端与服务器端要通过某种标识来进行通信,从而让服务器判断请求资源是否可以缓存访问,这主要涉及到下面两组header字段,这两组搭档都是成对出现的,即第一次请求的响应头带上某个字段(Last-Modified或者Etag),则后续请求则会带上对应的请求字段(If-Modified-Since或者If-None-Match),若响应头没有Last-Modified或者Etag字段,则请求头也不会有对应的字段。
三种刷新操作
- 正常操作:地址栏输入url,跳转链接,前进后退等
- 手动刷新:F5,点击刷新按钮,右击菜单刷新
- 强制刷新:ctrl+F5
不同刷新操作,不同的缓存策略
- 正常操作:强制缓存有效,协商缓存有效
- 手动刷新:强制缓存失效,协商缓存有效
- 强制刷新:强势患侧失效,协商缓存失效