configConstant.js

const BASE_URL_LOCAL = "http://192.168.5.17";//本地环境
const BASE_URL_DEVELOPMENT = "https://qa.qugaiba.com"; //测试(以实际开发api文档为准)
const BASE_URL_PRODUCTION = "https://qugaiba.com"; //正式服(以实际开发api文档为准)const LOGINAPI = "/qugai/api2/v1/login/wechat"; //登录接口(以实际开发api文档为准)
const FORMIDAPI = "/qa/api/v1/"; //用于存放用户formId接口(以实际开发api文档为准)const BASE_URL = {local: `${BASE_URL_LOCAL}${FORMIDAPI}`,development: `${BASE_URL_DEVELOPMENT}${FORMIDAPI}`,production: `${BASE_URL_PRODUCTION}${FORMIDAPI}`,
};
const ENV = "local";//本地环境
// const ENV = "development";//测试环境
// const ENV = "production";//正式环境export{BASE_URL,ENV,LOGINAPI,FORMIDAPI
};

http.js

import {BASE_URL,ENV} from "./constant/configConstant.js";class rp {constructor(url, type) {this.url = `${BASE_URL[ENV]}${url}`;this.method = type;this.headers = {};this.qs = {};this.body = {};}header(v1, v2) {if (typeof v1 === 'object') {this.headers = v1;} else {this.headers[v1] = v2;}return this;}query(v1, v2) {if (typeof v1 === 'object') {this.qs = v1;} else {this.qs[v1] = v2;}return this;}send(data) {this.body = data;return this;}async end() {let auth = wx.getStorageSync('token');if (auth) {this.header('Authorization', auth);}let rpOpt = {url: this.url,header: this.headers,method: this.method,data: this.body};let isJsonType = this.method === 'POST' || this.method === 'PUT';let qs = [];for (let k in this.qs) {qs.push(`${k}=${this.qs[k]}`);}if (qs.length !== 0) {qs = qs.join('&');rpOpt.url += rpOpt.url.indexOf('?') === -1 ? `?${qs}` : `&${qs}`;}if (isJsonType) {rpOpt.data = this.body;rpOpt.dataType = 'json';if(!this.headers){rpOpt.header['Content-Type'] = 'application/json';}}let [err,res] = await uni.request(rpOpt);console.log(res.header.authorization)if(res.header?.authorization && res.header?.authorization !== auth){uni.setStorageSync("token",res.header.authorization);}let info = res.data;if(info.code === 1){return info;}if(info.message && !info.message){info.moreInfo = info.message;}return info}
}const shttp = {get: (url) => {return new rp(url, 'GET');},post: (url) => {return new rp(url, 'POST');},put: (url) => {return new rp(url, 'PUT');},delete: (url) => {return new rp(url, 'DELETE');},
};export{shttp,rp};

用法示例

  • 在 script 中引入

    import { shttp } from "../utils/http";

get 请求例子

  async gettest() {const res = await shttp.get(`apiUrl`).query({key1:'value'}).end();}

put 请求例子

  async puttest() {const res = await shttp.put(`apiUrl`).send({key1:'value'}).end();}

post 请求例子

  async posttest() {const res = await shttp.post(`apiUrl`).send({key1:'value'}).end();}

delete 请求例子

   async deletetest() {const res = await shttp.delete(`apiUrl`).query({id:id}).end();}

uniapp请求的封装相关推荐

  1. uniapp 请求接口封装

    根目录新建一个文件夹(request),里面有两个js文件,一个config.js和http.js config.js let baseUrl = ''; if (process.env.NODE_E ...

  2. uni-app 请求封装

    uni-app 请求封装 请求封装 // 默认配置 const instanceConfig = {baseURL: '',header: {'content-type': 'application/ ...

  3. python 接口测试 url_Python 接口测试之接口请求方法封装

    引言 前面讲过三篇文章: 既然我们接口测试用例写好了,测试数据也拿到了,那么就是模拟调用接口的方法了,方法有get,post,put,delete,具体是选择哪种,我们需要根据不同接口规定好请求方法来 ...

  4. axios 跨域_当遇到跨域开发时,我们如何处理好前后端配置和请求库封装

    我们知道很多大型项目都或多或少的采用跨域的模式开发, 以达到服务和资源的解耦和高效利用. 在大前端盛行的今天更为如此, 前端工程师可以通过nodejs或者Nginx轻松搭建起web服务器.这个时候我们 ...

  5. CORS 请求未能成功_当遇到跨域开发时, 我们如何处理好前后端配置和请求库封装(koa/axios版)...

    我们知道很多大型项目都或多或少的采用跨域的模式开发, 以达到服务和资源的解耦和高效利用. 在大前端盛行的今天更为如此, 前端工程师可以通过nodejs或者Nginx轻松搭建起web服务器.这个时候我们 ...

  6. network/request.js网络请求模块封装

    网络请求模块封装 import axios from "axios"; //引入axios模块export function request(config) {//1,创建axio ...

  7. iframe 监听内部接口是否加载完成_低成本0基础打造自己的app之uni-app请求接口以及生命周期函数...

    引言 此教程为教你怎么用WordPress开发一个属于你自己的app(小程序) 前面我们讲解了怎么用WP开发一个首页幻灯片接口(低成本0基础开发app之开发首页幻灯片接口),本来这一节中我们应该讲解如 ...

  8. spring页面使用注解@RequestParam把请求参数封装到map中

    spring页面请求参数封装到map中 1.使用注解@RequestParam : /*** 查询全部[对应企业的全部]* @return*/@RequestMapping(value="/ ...

  9. C# 后台服务器端 Get 请求函数封装

    请求参数封装 /// <summary> /// 拼接 Get请求参数 /// </summary> /// <param name="parames" ...

最新文章

  1. metabase 以链接或图片查看_Python下载微信公众号文章内的图片
  2. 物料价格分析取未分摊和未分配价格差异
  3. 用javascript实现以下功能!_JavaScript实现汉字转拼音功能
  4. Mr.J-- jQuery学习笔记(五)--属性及属性节点
  5. 【渝粤教育】国家开放大学2018年春季 0680-22T会计基础知识 参考试题
  6. 阿里云云计算 46 阿里云DDoS防护
  7. 电机学感应电动机重点知识总结(现有题目中反映的)
  8. VB6.0基于ADO连接access踩坑之数据库不显示数据
  9. JAVA调用海康威视SDK
  10. STM32 USB接口 一键下载电路详解与过程分析
  11. Android安卓 自定义mapbox地图比例尺
  12. Excel中神秘的间接引用函数Indirect
  13. 组合数学-常用组合公式
  14. 中考计算机考键盘,信息技术中考键盘常识复习讲座.ppt
  15. 微信小程序万里目_微信小程序加盟千万别忘了几个基本要求
  16. 无线/移动通信的发展终极目标是,实现个人通信PCN是人类通信的最高目标,它指使用各种可能的网络技术,实现任何人在任何时间、任何地点与任何人进行任何何种类的信息交换。
  17. 媒体实录:百度林元庆第一时间解读百度大脑VS.最强大脑第一场
  18. php获取某一年的工作日列表
  19. java c2 compiler_C2中的CompilerThread
  20. PostgreSQL WHEN others THEN

热门文章

  1. 音视频大合集,先从零开始万事开头难
  2. 笔记本和linux台式共享网络,怎么把笔记本的网络共享给台式电脑
  3. linux挂载u盘显示目录忙,linux下挂载u盘及iso8859-1 not found错误解决
  4. 常见电脑硬件故障有哪些?如何解决?~~~显卡故障
  5. 机器学习入门系列之PCA降维
  6. 如何将html转移安卓手机,怎样设置呼叫转移,教您安卓手机如何设置呼叫转移
  7. 微信小程序利用canvas绘制一个动画百分比圆圈
  8. [Reproduced works]MongoDB Unauthorized Access Vulnerability
  9. 相机拍摄时最重要的三个参数——光圈、快门、ISO
  10. 小米 linux 内核面试,编译适配小米2S的CM Linux内核源代码及问题解决