0.1.2 • Published 4 years ago

vision-uni-request v0.1.2

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

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() 之前转换为请求载体实际需要的参数。

参数名类型说明默认值
urlString开发者服务器接口地址。-
methodString请求方法get
baseURLStringbaseURL 将自动拼接在 url 前面,除非 url 是一个绝对 URL。-
headersObject自定义请求头。{}
paramsObject语义化参数,本质与 data 参数相同,只在执行 get 请求时有效,此时指定的 data 参数是无效的。{}
dataObject请求发送的数据。{}
timeoutNumber请求超时时间,单位毫秒(0 表示无超时时间)。30000
withCredentialsBoolean跨域请求时是否需要使用凭证。false
responseTypeString服务器响应数据类型,有效值为 'text'、'arraybuffer'。text
fileKeyStringmethodupload 时有效,上传文件对应的 keyfile
filePathStringmethodupload 时有效,上传文件对应的资源路径。-
onUploadProgress(progressEvent) => void上传进度事件(未实现)。-
onDownloadProgress(progressEvent) => void下载进度事件(未实现)。-
validateStatus(status:number) => boolean定义对于给定的 HTTP 响应状态码请求 Promiseresolve 还是 reject,返回 trueresolve ,反之为 rejectstatus >= 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)