npm.io
0.1.2 • Published 6 years ago

vision-uni-request

Licence
MIT
Version
0.1.2
Deps
0
Size
106 kB
Vulns
0
Weekly
0

Vision Uni Request

安装

npm install vision-uni-request
基础示例
import request from 'vision-uni-request'

// get 请求
request
  .get('/user', { params: { id: '12345' } })
  .then(response => {
    console.log(response)
  })
  .catch(error => {
    console.log(error)
  })

// post 请求
request
  .post('/user', { data: { id: '12345' } })
  .then(response => {
    console.log(response)
  })
  .catch(error => {
    console.log(error)
  })
createInstance

通过 createInstance 创建一个 request 实例

import { createInstance } from 'vision-uni-request'

const request = createInstance({
  baseURL: 'http://www.example.com/api/',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
})
Config

在 vision-uni-request 内部,每个参数都保留了其默认值,因此这些参数都不是必须的。传入的请求参数将在调用 uni.request()、uni.upload()、uni.download() 之前转换为请求载体实际需要的参数。

参数名 类型 说明 默认值
url String 开发者服务器接口地址。 -
method String 请求方法。 get
baseURL String baseURL 将自动拼接在 url 前面,除非 url 是一个绝对 URL。 -
headers Object 自定义请求头。 {}
params Object 语义化参数,本质与 data 参数相同,只在执行 get 请求时有效,此时指定的 data 参数是无效的。 {}
data Object 请求发送的数据。 {}
timeout Number 请求超时时间,单位毫秒(0 表示无超时时间)。 30000
withCredentials Boolean 跨域请求时是否需要使用凭证。 false
responseType String 服务器响应数据类型,有效值为 'text'、'arraybuffer'。 text
fileKey String method 为 upload 时有效,上传文件对应的 key。 file
filePath String method 为 upload 时有效,上传文件对应的资源路径。 -
onUploadProgress (progressEvent) => void 上传进度事件(未实现)。 -
onDownloadProgress (progressEvent) => void 下载进度事件(未实现)。 -
validateStatus (status:number) => boolean 定义对于给定的 HTTP 响应状态码请求 Promise 是 resolve 还是 reject,返回 true 为 resolve ,反之为 reject。 status >= 200 && status < 300
method

参数值支持大小写,调用请求载体前将自动转换为大写。

  • get / GET
  • post / POST
  • put / PUT
  • delete / DELETE
  • head / HEAD
  • options / OPTIONS
  • trace / TRACE
  • connect / CONNECT
  • upload / UPLOAD
  • download / DOWNLOAD
请求别名

默认导出的请求实例和通过 createInstance 创建的请求实例都可通过实例上的方法别名发起请求。

  • request.get(config)
  • request.post(config)
  • request.put(config)
  • request.delete(config)
  • request.head(config)
  • request.options(config)
  • request.trace(config)
  • request.connect(config)
  • request.upload(config)
  • request.download(config)
request.get({
  params: {
    firstName: '',
    lastName: ''
  }
})

request.post({
  params: {
    firstName: '',
    lastName: ''
  }
})
默认参数

通过实例上的 defaults 可以读取和修改实例默认 Config 值。

import request from 'vision-uni-request'

request.defaults.baseURL = 'http://www.example.com/api/'
request.defaults.timeout = 10000
响应结构

请求成功的响应包含以下信息。

{
  // 服务器提供的响应数据
  "data": {},

  // 服务器响应的 HTTP 状态码
  "status": 200,

  // 服务器响应的头
  "headers": {},

  // 服务器响应的 cookie
  "cookies": []
}
配置优先级

请求的 config 参数 > 实例的 defaults 属性 > vision-uni-request 默认值。

拦截器

通过实例上的 interceptors 添加拦截器。

// 添加请求拦截器
const requestInterceptor = request.interceptors.request.use(
  config => {
    // do something
    return config
  },
  error => {
    // do something
    Promise.reject(error)
  }
)

// 移除请求拦截器
request.interceptors.request.reject(requestInterceptor)

// 添加响应拦截器
const responseInterceptor = request.interceptors.response.use(
  response => {
    // do something
    return response
  },
  error => {
    // do something
    Promise.reject(error)
  }
)

// 移除响应拦截器
request.interceptors.response.reject(responseInterceptor)