一、HTTP报文结构是怎样的?
对于TCP而言,在传输的时候分为两个部分:TPC头和数据部分。
而HTTP类型,也是header + body的结构,具体而言:
起始行 + 头部 + 空行 + 实体
由于 http 请求报文和响应报文是有一定区别的,因此我们分开介绍。
1、起始行
对于请求报文来说,起始行类似下面这样:
GET/home HTTP/1.1
也就是 方法 + 路径 + http版本
对于响应报文来说 起始行一般长这样:
HTTP/1.1 200 OK
http版本 状态码 原因
在起始行中,每两个部分直接用空格隔开,最后一个部分后面应该接一个换行,严格遵循ABNF语法规范
2、头部
请求头和响应头 都可以在页面上找到的,内容比较长,就不截取出来了。
不管是请求头还是响应头,其中的字段都比较多,而且牵扯到http非常多特性,重点看这些头部字段的格式:
- 字段名不区分大小写
- 字段名不允许出现空格,不可以出现下划线 __
- 字段名后面必须紧接着冒号
3、空行
空行用来区分头部和实体部分
如果说在头部中间故意加一个空行,则空行后面的内容 都会被视为实体部分
4、实体
实体指的就是具体的数据,也就是body部分,请求报文对应请求体,响应报文对应响应体。
二、下面的代码输出什么?
const { name: myName } = { name: " Mike "};
console.log(name);
我自己试了试,打印为空白。但是看了看解析才明白其中的逻辑
当我们从右侧的对象结构属性name时,我们将其值 Mike 分配给名为myName的变量。使用{name: myName},我们是在告诉JavaScript我们要创建一个名为myName的新变量,并且其值是右侧对象的name属性的值。当我们尝试打印name,一个未定义的变量时,就会调用一个未定义的变量会引起语法错误,也就是引发ReferenceError。
三、数据Mock是什么?
Mock数据是前端开发过程中必不可少的一环,是分离前后端开发的关键链路。
通过预先跟服务器端约定好的接口,模拟请求数据甚至逻辑,能够让前端开发独立自主,不会被服务端的开发所阻塞。
前后端同时开发的时候,后端接口数据没有出来,前端可以mock假数据,模拟开发。
Mock.js是常用的辅助生成模拟数据的三方库,借助他可以提升我们的mock数据能力。