tf-request
v0.2.0
Published
request模块
Downloads
4
Readme
请求模块
// 引入
import request, { setCsrfUrl, setCsrf } from "tf-request";
// 使用
request('url地址', {
body: String | Object, // 传给后端的参数
dataType: 'jsonp', // 后端返回的数据格式, 一般不传, 目前只支持传入jsonp
type: '', // 前端传给后端的数据格式, 一般不传, 默认form类型, 只支持传入json
method: 'get | post', // 请求类型, 默认post
hasCsrf: Boolean | Fucntion(url, options), // 是否需要先发csrf请求, 默认false
csrfUrl: String, // 设置csrf请求地址
csrf(data, csrfType) { // 可选, 返回请求需要拼接的csrf参数, 默认为:
return { csrfType, csrfToken: data.data }
}
interceptRequest(data) { // 请求发送前做处理, 可选参数
// ...对data做处理, 有下面2种返回数据方式:
// 方式1: 直接返回处理后的data
return data;
// 方式2: 返回一个Promise
return new Promise(resolve => {
setTimeout(() => { // 模拟异步请求
console.log(data)
// data.body = data.body + '&c=ccc' // 如果是post请求方式, 请拼接到body上
data.url = data.url + '?x=xxxx' // 如果是get请求方式, 请拼接到url上
resolve(data) // 返回数据
}, 1000)
})
},
interceptResponse(data) { // 拦截返回的请求做处理, 可选参数
// 对data做处理
return data // 一定要返回数据
}
// ps: 如果是jsonp, options还支持参数: timeout, jsonpCallbackFunction, jsonpCallback等参数
// 文档地址: https://www.npmjs.com/package/fetch-jsonp
})
.then(data => {
console.log(data) // 返回的数据
})
.catch(e) {
console.log(e) // 错误信息
}
// cors请求
request('https://cnodejs.org/api/v1/topics', {
method: 'get',
mode: 'cors',
// credentials: 'include',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: 'a=aa'
}).then(function(response) {
console.log(response);
});
setCsrfUrl('url地址')
setCsrf(true)