后端资源请求
@jiess/http/request
是用于请求后端资源的工具函数
与JiessHttp的关系
JiessHttp 是基于本模块的封装,JiessRequest 更偏底层,功能更单纯
准备工作
使用包管理器,安装依赖
bash
# 安装工具模块
npm i @jiess/http -S
# -------------------------------------------------
# 引入未经babel转化的版本(体积小,建议高版本项目中使用)
import JiessRequest from '@jiess/http/request';
# 引入babel转化的版本(体积大,建议低版本项目中使用)
import JiessRequest from '@jiess/http/JiessRequest.babel';
使用cdn引入js库
bash
# 引入未经babel转化的版本(体积小,建议高版本项目中使用)
<script src="//cdn.jsdelivr.net/npm/@jiess/http/request.js"></script>
# 引入babel转化的版本(体积大,建议低版本项目中使用)
<script src="//cdn.jsdelivr.net/npm/@jiess/http/JiessRequest.babel.js"></script>
使用cdn引入后,会在全局挂载名为JiessRequest的实例对象
特点
- 自动降级:优先使用
fetch API
,若不支持,则降级使用Ajax
- restful:支持
restful api
接口规范,以及响应数据拦截 - 防抖:默认启用,短时间内调用相同接口,需要等待初始接口响应
防抖
- 短时间内对同参数(地址,方法和参数均相同)的同一接口的调用,会视为重复请求
- 重复请求时仅首次会真实的调用后端接口,其他的重复接口的回调会放入等待队列
- 首次请求有了响应,响应值会自动分发给所有的接口回调,有效降低服务器压力
配置对象
本模块导出一个函数,调用该函数时需要请求配置对象
配置属性
属性 | 说明 | 类型 | 默认值 | 可选参数 |
---|---|---|---|---|
url | 完整的接口地址(含baseURL) | String | —— | —— |
method | 请求方法 | String | GET | —— |
type | content-type协议类型 | json | 200 | json/text/form/其他/无 |
headers | 请求头对象 | Object | {} | —— |
query | url请求参数 | Object | {} | —— |
body | body请求参数 | {} | get | —— |
useFetch | 是否启用fetch API | Boolean | true | —— |
useCache | 是否启用缓存 | Boolean | true | —— |
httpCacheParam | 缓存配置 | —— | —— | —— |
type
type是对请求头中content-type
的简写,以下是简化方案
type值 | 对应的content-type值 | 默认 | 备注 |
---|---|---|---|
json | application/json | 是 | body数据为JSON字符串 |
text | application/text | 否 | body数据为字符串类型 |
form | application/x-www-form-urlencoded | 否 | body数据为键值表单数据 |
其他 | 原样使用该数据 | 否 | 其他字符串数据 |
—— | —— | 否 | 不指定协议,如上传附件 |
type优先级较低
若header头中显式指定content-type
,则优先使用该显式的定义,type不生效
httpCacheParam
缓存配置对象,即防抖配置,记录缓存和防抖相关的配置
- 【waitTime】
- 默认:0
- 类型:String
- 详细 缓存的时间间隔的阈值
对于请求太快,又需要适当等待(如Loading加载),可指定等待时长,再响应数据