easy to use fetch lib
npm install venus-fetch``bash`
npm install venus-fetch
`javascript
import VFetch from 'venus-fetch'
const http = VFetch(opt)
`
javascript
const httpConfig = {
conf: {
credentials: 'include',
baseUrl: '/api',
headers: {
Accept: 'application/json',
// 'Content-Type': 'application/json',
},
},
before: [
([url, opt]) => {
console.log('hook1', url, opt)
},
([url, opt]) => {
console.log('hook2', url, opt)
},
],
after: [
(rsp) => {
console.log('after hook1', rsp)
},
],
timeout: 5000,
}
`| 配置 | 说明 | 默认值 | 其它 |
| - | - | - | - |
| allow | client 允许的请求类型 | ['get', 'post', 'put', 'delete', 'option'] | 可选 |
| before | 前置钩子(钩子数组) | []| 可选 |
| after | 后置钩子(钩子数组) | [] | 可选 |
| conf | fetch配置项 | | 参考fetch api 文档 |
| error | 全局错误处理函数 | null | 可选 |
方法
+ get(url, [parmas], [options]) // 基于初始化配置的 allow
+ post(url, [parmas], [options]) // 基于初始化配置的 allow
+ put(url, [parmas], [options]) // 基于初始化配置的 allow
+ delete(url, [parmas], [options]) // 基于初始化配置的 allow
+ option(url, [parmas], [options]) // 基于初始化配置的 allow
+ setErrorHook(func) 设置全局错误处理器
+ injectBefore(func) 增加前置拦截器
+ injectAfter(func) 增加后置拦截器
具体请求方法中携带的
`options`中提供了`type`字段,可选 `[download/upload]`,分别对应了上传文件和下载文件流的操作,`type:upload`时,将会把请求头中的`Content-Type`设置为`undefined`;`type:download`时,将会把`response`进行`response.blob()`操作内置error code
+ HTTP_STATUS_ERROR - 服务器未正常响应
+ REQUEST_TIMEOUT - 请求超时
+ TOKEN_EXPIRE - token校验失败
+ RESPONSE_PARSING_FAILED - reponse 解析出错
injectAfter function
如果injectAfter function有返回值且返回值是HttpError的实例的话,当前请求的promise会被reject,
这次请求的失败信息将也会触发onError事件。
$3
`javascript
http.injectAfter(function(rsp){
// do some response check return new vFetch.HttpError({
code: '001',
message: 'error test',
httpStatus: null,
})
})
`Content-Type
为了方便使用,下面这几种情况下vFetch会根据content-type去自动设置request body的类型,
处理body对象的构建
+ application/x-www-form-urlencoded (默认) 如果传入的params是object类型,则自动构建请求body
+ multipart/form-data 自动根据请求的parmas object 构建 FromData对象
+ application/json 如果传入的params是object类型,则自动转换成JsonString,如果为string类型,则直接用传入的params
请求的params为FormData类型时,request的body不会进行自动转换
httpError
$3
httpError实例的构造函数为 vFetch.HttpError
$3
`javascript
{
code: "TOKEN_EXPIRE"
httpStatus: 401
message: "用户认证失败"
}
`示例
`html
Document
``