0.2.0 • Published 4 years ago

tf-request v0.2.0

Weekly downloads
1
License
ISC
Repository
-
Last release
4 years ago

请求模块

// 引入
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)