uni-app接口请求封装
首先根目录下新建文件夹取名随意,这里我取名common(意为:常见的、共有的)
然后新建request.js文件,贴入以下代码
-
let server_url = ''; //请求根路径(服务器地址)
-
let token = '';//token令牌
-
// process.env.NODE_ENV === 'development' ? 'http://192.168**:6002' : 'http://***/api'; //环境配置,一般这个地址是需要创建一个单独的配置文件向外暴露变量的,因为有时上传文件也需要用到
-
//向外暴露一个方法,传入一个默认值(空对象)
-
export function service(options = {}) {
-
uni.getStorageSync('token') &&(token = uni.getStorageSync('token'));//从本地缓存中获取token
-
options.url = `${server_url}${options.url}`;//前面为你的服务器地址,后面为具体接口地址
-
//配置请求头
-
options.header = {
-
// 'content-type': 'application/json',//默认请求头,可不写
-
'Authorization': `${token}` //Bearer ,你请求数据需要的自定义请求头(令牌)
-
};
-
// 创建promise,因为接口请求无非就两种情况,成功或失败,成功就.then处理,失败就可以统一处理(弹框提示等等)
-
return new Promise((resolved, rejected) => {
-
//成功
-
options.success = (res) => {
-
if (Number(res.data.code) == 200) { //请求成功
-
resolved(res.data);//请求成功时返回接口数据
-
} else {
-
uni.showToast({
-
icon: 'none',
-
duration: 3000,
-
title: `${res.data.desc}`
-
});//弹窗提示接口调用失败的信息
-
rejected(res.data.desc); //这里调用promise的rejected方法传入错误信息,这样就可以在调用的接口地方直接.catch拿到错误信息了
-
}
-
-
}
-
//错误(一般没有网络的情况下会走这里)
-
options.fail = (err) => {
-
rejected(err); //请求失败时返回错误信息
-
}
-
uni.request(options);//调用uni的api,传入配置我们的外部配置参数
-
-
});
-
}
注意事项:如果是H5端一般会有跨域问题(小程序端不存在跨域问题),具体可在项目manifest文件中配置
-
"h5": {
-
// 开发环境 server 配置
-
"devServer": {
-
"port": 8088,//端口号,这个自己随便配置,防止开发多个项目是端口号冲突,跟跨域配置没关系
-
"disableHostCheck": true,//禁用 Host 检查
-
-
// 能成功跨域的前提是:本地跑项目的端口需要与后台接口允许跨域的端口一致
-
"proxy": {
-
"/api/sys": {
-
"target": "http://192.168**:6002",//请求目标路径
-
"changeOrigin": true,//当为true时,代理服务器向后端发送请求时端口号会与后端端口号一致,vue里面默认为true,react默认为false,如果为false,向后端发送请求时后端显示的端口号就还是本地的端口号,如果后端没有做出限制还是能请求
-
"secure": false,
-
"ws": false,//用于支持websocket,默认为true
-
// "pathRewrite": {//重写本地发起的路径
-
// "^/api/sys": "/api"//正则表达式,将/api/sys变成/api,如果接口接口地址有api这个路径就变成api,如果没有就把他变成空字符串
-
// }
-
},
-
//可配置多个
-
"/api/contract": {
-
"target": "http://192.168.**:6001",//目标地址
-
"changeOrigin": true,//允许跨域
-
"secure": false,
-
"ws": false
-
}
-
}
-
}
-
}
使用:新建api.js文件(用于管理所有的api接口),如果项目比较大建议在每个模块的文件夹下都建一个api.js,或者建一个文件夹下面创建多个api.js文件
第一步:参数配置
import {service} from '../../../common/request.js'//request向外暴露的方法 export function login(data) { //传入对应的配置对象 return service({ url: '/api/sys/loginController/userLogin',//接口地址 method: 'GET',//请求方法 data//请求接口需要的参数 }) }第二步:页面调用
import {login} from './api.js'//具体根据你项目的路径修改 click() { //params为接口需要的参数 login(params).then(res => { if (res.code == 200) { //一般成功状态码都是200,根据实际情况判断 //此处为接口调用成功之后需要做的事情 } else { //否者就是不成功,一般会弹出错误信息 } }) }
uni-app接口请求封装的更多相关文章
- 微信小程序request(ajax)接口请求封装
微信小程序request(ajax)接口请求封装 最近在进行小程序的编写,需要调用后端接口,经常要用到wx.request方法,所以就自己封装了一下,简化一下代码,如果能给大家提供帮助更好,在封装的时 ...
- uni-app(二)接口请求封装,全局输出api
在项目 main.js 同级创建 utils 文件夹, utils里创建 config.js文件,存储重要参数 // 获取平台信息 const { system, } = uni.getSystemI ...
- 微信小程序HTTP接口请求封装
1.方法封装(新建文件夹util,工具文件,在文件夹下创建request.js文件,用于对方法封装)request.js: var app = getApp(); //项目URL相同部分,减轻代码量, ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-封装mock(9)
封装mock # -*- coding: utf-8 -*- # @Time : 2020/2/12 8:51 # @File : mock_demo_9.py # @Author: Hero Liu ...
- 《PHP开发APP接口》笔记
PHP开发APP接口 [TOC] 课程地址 imooc PHP开发APP接口 学习要点 APP接口简介 封装通信接口方法 核心技术 APP接口实例 服务器端 -> 数据库|缓存 -> 调用 ...
- 简单的基于Vue-axios请求封装
具体实现思路=>封装之前需要用npm安装并引入axios,使用一个单独的js模块作为接口请输出对象,然后export dafult 这个对象. 1.首先我们需要在Vue实例的原型prototyp ...
- angular cli http请求封装+拦截器配置+ 接口配置文件
内容:接口配置文件.http请求封装 .拦截器验证登录 1.接口配置文件 app.api.ts import { Component, OnInit } from '@angular/core'; / ...
- 【uni-app】uni.request二次封装,更好的管理api接口和使用
前言 之前写了一个Vue.js的axios二次封装(点击跳转),这次是uni-app,uni-app是基于vue.js框架的,我觉得是很好用的一个框架,而且一套代码编译那么多平台,非常节省成本,当然, ...
- python自动化--接口请求及封装
基于http协议,最常用的是GET和POST两种方法. 接口文档需要包含哪些信息: 接口名称接口功能接口地址支持格式 json/xml请求方式请求示例请求参数(是否必填.数据类型.传递参数格式)返回参 ...
- 接口请求失败处理,重新请求并限制请求次数.自己封装搞定retry函数
最近开发一款小程序的时候想到一个问题,如果接口突然挂掉怎么办呢,于是乎想到一个解决办法.接口请求重试功能.并限制请求次数 用最新的async函数语法实现.代码简洁明了. 测试代码如下: functio ...
随机推荐
- Denso Create Programming Contest 2022(AtCoder Beginner Contest 239) E~F 题
E - Subtree K-th Max 题意:给定一个以 \(1\) 为根的树,节点个数为 \(n(\le 1e5)\),每个点都有自己的点权.需要回答 \(m(\le1e5)\) 次询问.每次询问 ...
- Python | BitMap算法及其实现
BitMap概述 本文介绍 BitMap 算法的应用背景,算法思想和相关实现细节. 概括而言,BitMap 主要用来解决海量数据中元素查询,去重.以及排序等问题.这里对海量数据场景的强调,似乎暗示了这 ...
- Python日常学习
学习算法和数据结构之余开始接触python,目前正在学习语法部分,这篇blog记录下一些知识点和放一些文档 or 教程的传送门. 文档网站 Python 解释器内置函数 Python速成 from O ...
- SCA技术进阶系列(一):SBOM应用实践初探
现代软件都是组装的而非纯自研.随着开源组件在数字化应用中的使用比例越来越高,混源开发已成为当前业内主流开发方式.开源组件的引入虽然加快了软件开发效率,但同时将开源安全问题引入了整个软件供应链.软件组成 ...
- 聚焦 AIGC,函数计算为 AI 应用插上腾飞翅膀
6月1日,2023 阿里云峰会·粤港澳大湾区在广州举办,Serverless 加速创新分论坛如约亮相,阿里云函数计算 FC 聚焦 AIGC 应用开发,GPU 性能体验再升级,让 AIGC 应用开发更简 ...
- Webpack Vue瘦身,感受快到飞起的加载速度!
症结 在利用webpack脚手架搭建vue项目后,往往最终打包的.js和.css文件过于庞大,造成首次加载的时候白屏时间过长,影响用户体验,下图为未经任何优化直接npm run build之后的情况: ...
- C#设计模式13——建造者模式的写法
1. 什么是建造者模式? 建造者模式是一种创建型设计模式,它通过将一个复杂的对象分解为多个简单的对象并按照一定的顺序进行组装而创建出一个复杂的对象.这样可以使得构造过程更加灵活,同时也可以隐藏创建过程 ...
- 【scikit-learn基础】--『监督学习』之 空间聚类
空间聚类算法是数据挖掘和机器学习领域中的一种重要技术. 本篇介绍的基于密度的空间聚类算法的概念可以追溯到1990年代初期.随着数据量的增长和数据维度的增加,基于密度的算法逐渐引起了研究者的关注.其中, ...
- 机器学习-无监督机器学习-密度聚类DBSCAN-19
目录 1. DBSCAN 2. OPTICS 2. MeanShift 1. DBSCAN Density based clustering DBSCAN不要求我们指定cluster簇的数量,避免了异 ...
- java项目实践-webapp-mytomcat-day16
目录 1. http协议 2. 自定义的web框架 3. 具体实现 4. 启动 1. http协议 CS架构 建立连接"三次握手" 断开连接 "四次挥手" 三次 ...