首先根目录下新建文件夹取名随意,这里我取名common(意为:常见的、共有的)

然后新建request.js文件,贴入以下代码


  1. let server_url = ''; //请求根路径(服务器地址)
  2. let token = '';//token令牌
  3. // process.env.NODE_ENV === 'development' ? 'http://192.168**:6002' : 'http://***/api'; //环境配置,一般这个地址是需要创建一个单独的配置文件向外暴露变量的,因为有时上传文件也需要用到
  4. //向外暴露一个方法,传入一个默认值(空对象)
  5. export function service(options = {}) {
  6. uni.getStorageSync('token') &&(token = uni.getStorageSync('token'));//从本地缓存中获取token
  7. options.url = `${server_url}${options.url}`;//前面为你的服务器地址,后面为具体接口地址
  8. //配置请求头
  9. options.header = {
  10. // 'content-type': 'application/json',//默认请求头,可不写
  11. 'Authorization': `${token}` //Bearer ,你请求数据需要的自定义请求头(令牌)
  12. };
  13. // 创建promise,因为接口请求无非就两种情况,成功或失败,成功就.then处理,失败就可以统一处理(弹框提示等等)
  14. return new Promise((resolved, rejected) => {
  15. //成功
  16. options.success = (res) => {
  17. if (Number(res.data.code) == 200) { //请求成功
  18. resolved(res.data);//请求成功时返回接口数据
  19. } else {
  20. uni.showToast({
  21. icon: 'none',
  22. duration: 3000,
  23. title: `${res.data.desc}`
  24. });//弹窗提示接口调用失败的信息
  25. rejected(res.data.desc); //这里调用promise的rejected方法传入错误信息,这样就可以在调用的接口地方直接.catch拿到错误信息了
  26. }
  27. }
  28. //错误(一般没有网络的情况下会走这里)
  29. options.fail = (err) => {
  30. rejected(err); //请求失败时返回错误信息
  31. }
  32. uni.request(options);//调用uni的api,传入配置我们的外部配置参数
  33. });
  34. }

注意事项:如果是H5端一般会有跨域问题(小程序端不存在跨域问题),具体可在项目manifest文件中配置


  1. "h5": {
  2. // 开发环境 server 配置
  3. "devServer": {
  4. "port": 8088,//端口号,这个自己随便配置,防止开发多个项目是端口号冲突,跟跨域配置没关系
  5. "disableHostCheck": true,//禁用 Host 检查
  6. // 能成功跨域的前提是:本地跑项目的端口需要与后台接口允许跨域的端口一致
  7. "proxy": {
  8. "/api/sys": {
  9. "target": "http://192.168**:6002",//请求目标路径
  10. "changeOrigin": true,//当为true时,代理服务器向后端发送请求时端口号会与后端端口号一致,vue里面默认为true,react默认为false,如果为false,向后端发送请求时后端显示的端口号就还是本地的端口号,如果后端没有做出限制还是能请求
  11. "secure": false,
  12. "ws": false,//用于支持websocket,默认为true
  13. // "pathRewrite": {//重写本地发起的路径
  14. // "^/api/sys": "/api"//正则表达式,将/api/sys变成/api,如果接口接口地址有api这个路径就变成api,如果没有就把他变成空字符串
  15. // }
  16. },
  17. //可配置多个
  18. "/api/contract": {
  19. "target": "http://192.168.**:6001",//目标地址
  20. "changeOrigin": true,//允许跨域
  21. "secure": false,
  22. "ws": false
  23. }
  24. }
  25. }
  26. }

使用:新建api.js文件(用于管理所有的api接口),如果项目比较大建议在每个模块的文件夹下都建一个api.js,或者建一个文件夹下面创建多个api.js文件

第一步:参数配置


  1. import {service} from '../../../common/request.js'//request向外暴露的方法
  2. export function login(data) {
  3. //传入对应的配置对象
  4. return service({
  5. url: '/api/sys/loginController/userLogin',//接口地址
  6. method: 'GET',//请求方法
  7. data//请求接口需要的参数
  8. })
  9. }

第二步:页面调用


  1. import {login} from './api.js'//具体根据你项目的路径修改
  2. click() {
  3. //params为接口需要的参数
  4. login(params).then(res => {
  5. if (res.code == 200) { //一般成功状态码都是200,根据实际情况判断
  6. //此处为接口调用成功之后需要做的事情
  7. } else {
  8. //否者就是不成功,一般会弹出错误信息
  9. }
  10. })
  11. }

uni-app接口请求封装的更多相关文章

  1. 微信小程序request(ajax)接口请求封装

    微信小程序request(ajax)接口请求封装 最近在进行小程序的编写,需要调用后端接口,经常要用到wx.request方法,所以就自己封装了一下,简化一下代码,如果能给大家提供帮助更好,在封装的时 ...

  2. uni-app(二)接口请求封装,全局输出api

    在项目 main.js 同级创建 utils 文件夹, utils里创建 config.js文件,存储重要参数 // 获取平台信息 const { system, } = uni.getSystemI ...

  3. 微信小程序HTTP接口请求封装

    1.方法封装(新建文件夹util,工具文件,在文件夹下创建request.js文件,用于对方法封装)request.js: var app = getApp(); //项目URL相同部分,减轻代码量, ...

  4. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-封装mock(9)

    封装mock # -*- coding: utf-8 -*- # @Time : 2020/2/12 8:51 # @File : mock_demo_9.py # @Author: Hero Liu ...

  5. 《PHP开发APP接口》笔记

    PHP开发APP接口 [TOC] 课程地址 imooc PHP开发APP接口 学习要点 APP接口简介 封装通信接口方法 核心技术 APP接口实例 服务器端 -> 数据库|缓存 -> 调用 ...

  6. 简单的基于Vue-axios请求封装

    具体实现思路=>封装之前需要用npm安装并引入axios,使用一个单独的js模块作为接口请输出对象,然后export dafult 这个对象. 1.首先我们需要在Vue实例的原型prototyp ...

  7. angular cli http请求封装+拦截器配置+ 接口配置文件

    内容:接口配置文件.http请求封装 .拦截器验证登录 1.接口配置文件 app.api.ts import { Component, OnInit } from '@angular/core'; / ...

  8. 【uni-app】uni.request二次封装,更好的管理api接口和使用

    前言 之前写了一个Vue.js的axios二次封装(点击跳转),这次是uni-app,uni-app是基于vue.js框架的,我觉得是很好用的一个框架,而且一套代码编译那么多平台,非常节省成本,当然, ...

  9. python自动化--接口请求及封装

    基于http协议,最常用的是GET和POST两种方法. 接口文档需要包含哪些信息: 接口名称接口功能接口地址支持格式 json/xml请求方式请求示例请求参数(是否必填.数据类型.传递参数格式)返回参 ...

  10. 接口请求失败处理,重新请求并限制请求次数.自己封装搞定retry函数

    最近开发一款小程序的时候想到一个问题,如果接口突然挂掉怎么办呢,于是乎想到一个解决办法.接口请求重试功能.并限制请求次数 用最新的async函数语法实现.代码简洁明了. 测试代码如下: functio ...

随机推荐

  1. 如何在Windows中使用Telnet客户端

    Telnet协议的解释 Telnet( TE终端NET工作的缩写)是一种网络协议,用于提供与设备通信的命令行界面 . Telnet最常用于远程管理,但有时也用于某些设备的初始设置,尤其是交换机 ,接入 ...

  2. L2-030 冰岛人 (25 分) (阅读理解)

    补题链接:Here 2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名.好事者发现冰岛人的名字后面似乎都有个"松"(son),于是有网友科普如下: 冰岛人沿用的是维京人古 ...

  3. Java 开发手册 (阿里巴巴开发手册)

    Java 开发手册 (有需要pdf版本的私信我,可以邮箱发)0版本号 制定团队 更新日期 备注 1.4.0 阿里巴巴集团技术团队 2018.5.20 增加设计规约(详尽版) 一.编程规约 (一) 命名 ...

  4. springboot 参数通过 @RequestBody传递的写法

    controller中有时候参数是使用 @RequestBody传递的这种怎么写? 直接上代码 @RequestMapping("/test") public void getAc ...

  5. vue prop 会接收不同的数据类型

    refAge: { type: Number, default: 0 }, refName: { type: String, default: '' }, hotDataLoading: { type ...

  6. hybird介绍

    什么是hybird? hybrid即"混合",即前端和客户端的混合开发,需要前端开发人员和客户端开发人员配合完成. hybrid存在价值 可以快速迭代更新(无需app审核,思考为何 ...

  7. 线性代数 · 矩阵 · Matlab | 满秩分解代码实现

    背景 - 矩阵的满秩分解: 若 A 为 m×n 矩阵,rank(A) = r,则存在 F m×r.G r×n,使得 A = FG. 其中,F 列满秩,G 行满秩. 求满秩分解的方法: 得到 A 的行最 ...

  8. nginx 工作原理及特点

    本文为博主原创,未经允许不得转载: nginx 简介:是一个高性能 HTTP 和 反向代理 服务器. Nginx 特点是占有内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中 ...

  9. windows mysql安装及常用命令

    安装windows版本mysql只是为本地代码调试,不建议用于生产.觉得步骤麻烦也可以直接下载集成环境(如xampp),一键安装即可用.之前本地测试都用一键安装,今天换个方法玩玩,安装步骤如下: my ...

  10. 文心一言 VS 讯飞星火 VS chatgpt (184)-- 算法导论13.5 1题

    一.用go语言,对于图14-1中的红黑树 T,说明执行 OS-SELECT(T.root,10)的过程. 文心一言: 在红黑树中,OS-SELECT 是一个用于在树中查找特定键值的操作.给定一个红黑树 ...