Posted in: uni-app

luch-request 常见问题(01)

luch-request 是一个基于Promise 开发的uni-app跨平台、项目级别的请求库,它有更小的体积,易用的api,方便简单的自定义能力。

luch-request官网


1. 如果cli 用户npm 引入报错?

插件使用es6,es7 开发,好处就是结构清晰,语义化,开发代码少,并且对于目前的我来说,完全没有必要使用es5开发。
为什么不用babel解决:babel 编译后的代码对uni的条件编译注释不友好。如果不用条件编译则不能发挥最大优势。
这样存在的问题:对于HBuilderX 创建的项目完全没有影响,idea 会对node_modules 里的插件条件编译,并且babel。主要是cli 用户,cli 不会对node_modules 里的代码babel。
可尝试如下配置

// vue.config.js
 module.exports = {
      transpileDependencies: ['luch-request']
 }

2. 为什么会请求两次?

如果其中有options 请求:本地访问接口时跨域请求,所以浏览器会先发一个option 去预测能否成功,然后再发一个真正的请求。(自己观察请求头,Request Method,百度简单请求

3. 如何跨域?

问的人不少,可以先百度了解一下。如何跨域

4. TypeError: undefined is not an object (evaluating ‘this.$http.get’)

不知道为啥问的人这么多?太基础了,百度学习一下 export default 和export,头大。
import { http } from '@/utils/luch-request/index.js'

5. 什么参数需要在setConfig 设置?什么参数需要在request 拦截器设置?

  • setConfig 适用于设置一些静态的/默认的参数;比如header 里的一些默认值、默认全局参数(全局请求配置)。token 并不适合在这里设置。
  • interceptors.request 拦截器适用范围较广,但我仍然建议把一些静态的东西放在 setConfig 里。拦截器会在每次请求调用,而 setConfig 仅在调用时修改一遍。

6. 如何jwt无痛刷新?

jwt无痛刷新

7. 如何配置超时时间?

全局

网络请求的 超时时间 可以统一在 manifest.json 中配置 networkTimeout

插件的全局配置超时时间:插件-全局请求配置-timeout。必须请求方法和终端支持timeout,支持度参照timeout 支持度

局部

局部配置项timeouttimeout。必须请求方法和终端支持timeout,支持度参照timeout 支持度

如果终端和请求方式不支持timeout,可参考如下实现

 http.request({
    method: 'POST', // 请求方法必须大写 [GET|POST|PUT|DELETE|CONNECT|HEAD|OPTIONS|TRACE]
    url: '/user/12345',
    data: {
      firstName: 'Fred',
      lastName: 'Flintstone'
    },
    params: { // 会拼接到url上
      token: '1111'
    },
    // 返回当前请求的task, options。请勿在此处修改options。非必填
    getTask: (task, options) => {
      // 500ms 后终止请求
      setTimeout(() => {
       task.abort()
      }, 500)
    }
  })

8. 发送FormData?

uni 不支持发送FormData对象

对于 POST 方法且 header[‘content-type’] 为 application/json 的数据,会进行 JSON 序列化。

对于 POST 方法且 header[‘content-type’] 为 application/x-www-form-urlencoded 的数据,会将数据转换为 query string。

所以,如果你想发送formData 类型数据,请将header['content-type'] 设置为 application/x-www-form-urlencoded

如果你的formData 里有file 怎么办?请使用插件的upload方法。


更多问题,访问luch-request 官网了解更多。

订阅
提醒
guest

4 评论
最新
最早的 投票最多的
在线反馈
显示所有评论
闲水小鱼

能不能增加请求缓存功能?比如get一些已请过&短期不会变化的数据,可以直接返回,不用跟服务端交互

rico

不知道为啥 微信小程序请求接口拿不到返回数据 在request哪里貌似有报错下一句执行不了 但是catch没捕获到,H5正常

sijiwen

你好 遇到同样问题 请问你解决了嘛

Back to Top