# 异步请求
# 说明
异步请求模块包含了一些常用的异步请求发送方法,导出模块名为req
此模块的请求方法对于复杂的请求功能并不合适,因为它没有如axios
的一些如请求拦截器,和响应拦截器的概念,因此如果需要更复杂场景,推荐
使用其他请求库,如axios
此模块的目标为服务一些简单场景如静态页面,或者一些小型应用;或者为了快速测试后端接口功能等
# 方法
# get
说明:GET请求方法
版本:1.1.1
- 参数
url:string
请求的URLquery:Object
URL查询字符串headers:Object
请求头信息timeout:number
超时时间,可选,默认3000毫秒abort:AbortController
可选,可用于取消请求的控制器实例xhr;XMLHttpRequest
可选,用于发送请求的XMLHttpRequest
实例,同时也可用来取消xhr请求api:string
底层的请求方式,可选,默认fetch
,可取值fetch
、xhr
- 返回:
Promise
包含请求结果的Promise
# post
说明:POST请求方法
版本:1.1.1
- 参数
url:string
请求的URLquery:Object
URL查询字符串params:Object
请求体中携带的请求参数,POST
和PUT
请求有效headers:Object
请求头信息timeout:number
超时时间,可选,默认3000毫秒abort:AbortController
可选,可用于取消请求的控制器实例xhr;XMLHttpRequest
可选,用于发送请求的XMLHttpRequest
实例,同时也可用来取消xhr请求api:string
底层的请求方式,可选,默认fetch
,可取值fetch
、xhr
- 返回:
Promise
包含请求结果的Promise
示例
post({
url:'xxxxxxx',
params:{name:'tom'}
}).then(res=>{
//成功回调
}).catch(err=>{
//错误回调
})
# put
说明:PUT请求方法
版本:1.1.1
- 参数
url:string
请求的URLquery:Object
URL查询字符串params:Object
请求体中携带的请求参数,POST
和PUT
请求有效headers:Object
请求头信息timeout:number
超时时间,可选,默认3000毫秒abort:AbortController
可选,可用于取消请求的控制器实例xhr;XMLHttpRequest
可选,用于发送请求的XMLHttpRequest
实例,同时也可用来取消xhr请求api:string
底层的请求方式,可选,默认fetch
,可取值fetch
、xhr
- 返回:
Promise
包含请求结果的Promise
# del
说明:Delete请求方法
版本:1.1.1
- 参数
url:string
请求的URLquery:Object
URL查询字符串headers:Object
请求头信息timeout:number
超时时间,可选,默认3000毫秒abort:AbortController
可选,可用于取消请求的控制器实例xhr;XMLHttpRequest
可选,用于发送请求的XMLHttpRequest
实例,同时也可用来取消xhr请求api:string
底层的请求方式,可选,默认fetch
,可取值fetch
、xhr
- 返回:
Promise
包含请求结果的Promise
# req
说明:通用请求方法
版本:1.1.1
- 参数
url:string
请求的URLmethod:string
string 请求方法,可选,默认GET
,可取值GET
、POST
、PUT
、DELETE
,大小写不敏感query:Object
URL查询字符串params:Object
请求体中携带的请求参数,POST
和PUT
请求有效headers:Object
请求头信息timeout:number
超时时间,可选,默认3000毫秒abort:AbortController
可选,可用于取消请求的控制器实例xhr;XMLHttpRequest
可选,用于发送请求的XMLHttpRequest
实例,同时也可用来取消xhr请求api:string
底层的请求方式,可选,默认fetch
,可取值fetch
、xhr
- 返回:
Promise
包含请求结果的Promise
示例
req({
url:'xxxxxx',
method:'GET' //大小写不敏感
})
//可以显示指定请求方式
req({
url:'xxxxxx',
method:'GET',
api:'xhr'
})
//通过外部传入控制器,来取消请求
let abort = new AbortController()
req({
url:'xxxxxx',
method:'GET',
api:'fetch',
abort
})
//取消请求
abort.abort()
//或者请求为xhr模式时
let xhr = new XMLHttpRequest()
req({
url:'xxxxxx',
method:'GET',
api:'xhr',
xhr
})
//取消请求
xhr.abort()
提示
- req方法默认使用fetch发送请求,如果fetch不支持,则降级使用xhr发送请求
- 如果req显示指定了请求方式,api为
xhr
或fetch
时,则使用指定的请求方式发送请求,无法发送会提示警告 - 需要请求取消,可以使用
reqEnhance
,也可以在外部创建AbortController
实例(fetch
下模式下有效),也可以传入XMLHTTPRequest
实例(xhr
模式下有效)
# reqEnhance
说明:增强通用请求方法
版本:1.1.1
- 参数
url:string
请求的URLmethod:string
string 请求方法,可选,默认GET
,可取值GET
、POST
、PUT
、DELETE
,大小写不敏感query:Object
URL查询字符串params:Object
请求体中携带的请求参数,POST
和PUT
请求有效headers:Object
请求头信息timeout:number
超时时间,可选,默认3000毫秒api:string
底层的请求方式,可选,默认fetch
,可取值fetch
、xhr
- 返回:
Object
返回一个对象,格式为{abort:Function,promise:Promise}
;其中abort
方法可取消正在执行的请求,promise
用于获取接口返回数据
示例
const {abort,promise} = reqEnhance({
url:'xxxxx',
method:'post',
api:'fetch',
params:{
name:'tom'
},
query:{
id:123,
age:14
}
})
//返回的abort可用来在请求未完成时取消请求
abort()
//promise可用来接收请求的返回结果
promise.then(res=>{
//成功处理
}).catch(err=>{
//错误处理
})