前端面试整理——HTTP

HTTP:需要调用后端的接口,提交、获取数据——http协议

题目:

  • http常见的状态码有哪些
  • http常见的header有哪些
  • 什么是Restful API
  • 描述一下http的缓存机制(重要)

1.http状态码

  • 状态码
  • 常见状态码
  • 关于协议和规范
状态码分类
  • 1xx 服务器收到请求
  • 2xx 请求成功,如200
  • 3xx 重定向,如302
  • 4xx 客户端错误,如404
  • 5xx 服务端错误,如500
常用状态码
  • 200 成功
  • 301 永久重定向(配合location,浏览器自动处理)
  • 302 临时重定向(配合location,浏览器自动处理)
    区别:服务器端返回301时,浏览器会记住地址已经改变并访问新地址,下一次访问时,客户端直接向新的地址发起请求。而302代表这一次访问旧网址转向新地址,下一次还是会想旧地址发起请求
  • 304 资源未被修改(第二次访问相同资源,使用本地缓存的结果
  • 404 资源未找到
  • 403 没有权限
  • 500 服务器错误
  • 504 网关超时

2.关于协议和规范

  • 就是一个约定
  • 要求大家都跟着执行
  • 不要违反规范,例如IE浏览器

3.http methods

  • 传统的methods
  • 现在的methods
  • Restful API
传统的methods
  • get 获取服务数据
  • post 像服务器请求数据
现在的methods
  • get 请求数据
  • post 新建数据
  • patch/put 更新数据
  • delete 删除数据
Restful API
  • 一种新的API设计方法(早已推广使用)
  • 传统API设计:把每个url当做一个功能
  • Restful API:把每个url当做唯一的资源

如何设计成一个资源?

  • 尽量不用url参数
  • 用method表示操作类型

不使用url参数

  • 传统API设计:/api/list?pageIndex=2
  • Restful API设计:/api/list/2

用method 表示操作类型(传统API设计)

  • post请求 /api/creat-blog
  • post请求 /api/update-blog?id=100
  • get请求 /api/get-blog?id =100

用method 表示操作类型(Restful API设计)

  • post请求 /api/blog
  • patch请求 /api/blog/100
  • get请求 /api/blog/100

4.http headers

  • 常见的Request Headers
  • 常见的Response Headers
    在这里插入图片描述
Request Headers
  • Accept 浏览器可接受的数据格式
  • Accept-Encoding 浏览器可接受的压缩算法,如gzip
  • Accept-Language浏览器可接受的语言,如zh-CN
  • Connection:keep-alive 一次TCP连接重复使用
  • cookie
  • Host
  • User-Agent(简称UA),浏览器信息
  • content-type 发送的数据格式,如application/json
    在这里插入图片描述

在这里插入图片描述

Response Headers
  • Content-type 返回数据的格式,如application/json
  • Content-length 返回数据的大小,多少字节
  • Content-Encoding 返回数据的压缩算法,如gzip
  • Set-Cookie
    在这里插入图片描述
缓存相关的headers
  • Cache-Control Expires
  • Last-Modified If-Modified-Since
  • Etag If-None-Match

5.http缓存

在这里插入图片描述

  • 关于缓存的介绍
  • http缓存策略(强制缓存+协商缓存)
  • 刷新操作方式,对缓存的影响
关于缓存
  • 什么是缓存
    第二次访问某个资源时,不必要全部重新加载资源,可从本地缓存中获取一些资源
  • 为什么需要缓存
    加快网页访问速度
  • 哪些资源可以被缓存
    静态资源(JS CSS IMG)
http缓存-强制缓存

在这里插入图片描述
Cache-Control

  • Response Headers中
  • 控制强制缓存的逻辑
  • 例如:Cache-Control:max-age=31536000
    在这里插入图片描述

Cache-Control的值

  • max-age:客户端不愿意接受age超过这个值的缓存
  • no-cache:缓存前必须先确认其有效性
  • no-store:不缓存请求或响应的任何内容
  • private:当指定使用public指令时,则明确表明其他用户也可利用缓存
  • public: 缓存服务器会对该特定用户提供资源缓存的服务,对于其他用户发过来的请求,代理服务器则不会返回缓存
http缓存-协商缓存(对比缓存)
  • 服务器端缓存策略
  • 服务端判断客户端资源,是否和服务端资源一样
  • 一直则返回304,否则返回200和最新的资源
    在这里插入图片描述

资源标识

  • 在Response Header中,有两种
  • Last-Modified 资源最后修改的时间
  • Etag 资源的唯一标识(一个字符串,类似人类的指纹)
    在这里插入图片描述

Last-Modified 和 Etag

  • 会优先使用Etag
  • Last-Modified 只能精确到秒级
  • 如果资源被重复生成,而内容不变,则Etag更精确
三种刷新操作
  • 正常操作:地址栏输入url,跳转链接,前进后退等
  • 手动刷新:F5
  • 强制刷新:ctrl+F5

不同的刷新操作,不同的缓存策略

  • 正常操作:强制缓存有效,协商缓存有效
  • 手动刷新:强制缓存失效,协商缓存有效
  • 强制刷新:强制缓存失效,协商缓存失效

小结

  • 强制缓存 Cache-Control
  • 协商缓存 Last-Modified 和 Etag,304状态码
  • 完整的流程图
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值