目录
7.我们可以修改先退出ctrl+c,修改后保存需要重新回到cmd重新运行 json-server 08.json
一:准备1:HTTP相关
1.HTTP请求基本过程
①浏览器端向服务器发送HTTP请求(请求报文)
②后台服务器接收到请求后,处理请求, 向浏览器端返回HTTP响应(响应报文)
③浏览器端接收到响应, 解析显示响应体或调用回调函数
2.HTTP请求报文
①请求行:
②请求头(一般有多个)
③请求体
3.HTTP响应报文
①响应行
②响应头(一般有多个)
③响应体
4.常见的响应状态码
1xx 服务器收到请求
2xx 请求成功 200成功
3xx 重定向,301永久重定向(接口返回一个location,浏览器自动跳转)
302临时重定向(接口返回一个location,浏览器自动跳转)
304资源未被修改(刚请求过又请求了,不再执行新请求,直接去缓存找数据)
4xx 客户端错误 404资源未找到 403没有权限(没登陆就想获取用户信息)
5xx 服务端错误 500服务器错误 504网关超时
5.请求方式
- GET(索取): 从服务器端读取数据 ----- 查(R)
- POST(交差): 向服务器端添加新数据 ------ 增(C)
- PUT: 更新服务器端已存在的数据 ------- 改(U)
- DELETE: 删除服务器端数据 ---------删(D)
6.请求参数
①query参数(查询字符串参数)
- 参数包含在请求地址中,格式为:/xxxx?name=tom&age=18
- 敏感数据不要用query参数,因为参数是地址的一部分,比较危险。
- 备注:query参数又称查询字符串参数,编码方式为urlencoded
②params参数
- 参数包含在请求地址中,格式如:http://localhost:3000/add_person /tom/18
- 敏感数据不要用params参数,因为参数是地址的一部分,比较危险。
③请求体参数
- 参数包含在请求体中,可通过浏览器开发工具查看
- 常用的两种格式:
格式一:urlencoded格式
例如:name=tom&age=18
对应请求头:Content-Type: application/x-www-form-urlencoded
格式二:json格式
例如: {"name": "tom", "age": 12}
对应请求头:Content-Type: application/json
7.请求方式与请求参数特别注意
- GET请求不能携带请求体参数,因为GET请求没有请求体。
- 理论上一次请求可以随意使用上述3种类型参数中的任何一种,甚至一次请求的3个参数可以用3种形式携带,但一般不这样做。
- 一般来说我们有一些“约定俗成”的规矩:
(1) 例如form表单发送post请求时: 自动使用请求体参数,用urlencoded编码。
(2) 例如jQuery发送ajax-post请求时:自动使用请求体参数,用urlencoded编码。
4.开发中请求到底发给谁?用什么请求方式?携带什么参数?----要参考项目的API接口文档。
二:准备2:API分类相关
1.API分类
传统API设计:把每个url当作一个功能
Restful API设计:把每个url当做一个唯一的资源
不使用url参数 传统API设计 : /api/list?pageIndex=2
Restful API设计 :/api/list/2
- REST API ( restful风格的API )
①同一个请求路径可以进行多个操作
②请求方式会用到GET/POST/PUT/DELETE
③发送请求进行CRUD哪个操作由请求方式来决定
- 非REST API ( restless风格的API )
①请求方式不决定请求的CRUD操作
②一个请求路径只对应一个操作
③一般只有GET/POST
2.使用json-server搭建REST API
①json-server是什么? ——————用来快速搭建REST API的工具包
3.在线文档: https://github.com/typicode/json-server
4.在cmd里面全局安装 npm i json-server -g
5.在命令行进入某个盘然后创建 json-server 08.json
6.里面默认生成的数据是
7.我们可以修改先退出ctrl+c,修改后保存需要重新回到cmd重新运行 json-server 08.json
8.使用postman测试接口
9.如果需要保存 ctrl+s
10.更改:
11.一般http请求与ajax请求的区别
①ajax请求是一种特别的http请求
②对服务器端来说, 没有任何区别, 区别在浏览器端
③浏览器端发请求: 只有XHR或fetch发出的才是ajax请求, 其它所有的都是非ajax请求
④浏览器端接收到响应
- 一般请求: 浏览器一般会直接显示响应体数据, 也就是我们常说的自动刷新/跳转页面
- ajax请求: 浏览器不会对界面进行任何更新操作, 只是调用监视的回调函数并传入响应相关数据
常见请求头:
http缓存
什么是缓存 一些静态资源(js.css.img)
http缓存策略(强制缓存+协商缓存)
强缓存:浏览器初次向服务器发起请求,服务器返回数据并且判断如果数据可以被缓存就加上Cache-Control,如果不适合就不加,此时浏览器再次访问就可以在本地中获取数据
Cache-Control的值:
max-age最大缓存时间 private public
no-cache不用b本地强缓存直接交给服务端处理 no-store不用本地缓存也不用服务端缓存
刷新操作方式,对缓存的影响
协商缓存 是服务器端缓存策略 服务器判断客户资源是否和服务端资源一致,一致就返回304,否则返回200和最新资源
浏览器初次请求 服务端返回资源和资源标识,
浏览器再次请求带着资源标识请求 服务端根据资源标识与自身是否相等 相等返回304 否则返回200和新的资源标识
资源标识:在Response Headers中,有两种
- Last-Modified 资源的最后修改时间
- Etag资源的唯一标识(一个字符串,类似人的指纹)