首页 > 其他分享 >uni-app接口请求封装

uni-app接口请求封装

时间:2023-04-17 10:11:40浏览次数:46  
标签:封装 请求 res app 接口 token api uni

首先根目录下新建文件夹取名随意,这里我取名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. }

参考链接:https://blog.csdn.net/weixin_52941842/article/details/124160780

标签:封装,请求,res,app,接口,token,api,uni
From: https://www.cnblogs.com/fairya/p/17324917.html

相关文章

  • uni-app 介绍及使用
    一、什么是uni-app    uni-app由dcloud公司开发的多端融合框架,是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。最大的优势一次开发,多......
  • APP产品设计到开发交付的流程
    APP产品设计到开发交付的流程可以分为以下几个步骤:需求分析阶段:在这个阶段,产品团队需要明确产品的目标、功能需求、用户群体、竞争对手等信息,以确定产品的设计方向。需求评审阶段:开发团队需要参与需求评审,以评估需求的可行性和实现难度,提出技术上的建议和优化方案,确保产品的......
  • CesiumJS 源码杂谈 - 从光到 Uniform
    目录1.有什么光2.光如何转换成Uniform以及何时被调用2.1.统一值状态对象(UniformState)2.2.上下文(Context)执行DrawCommand2.3.对WebGLUniform值的封装2.4.自动统一值(AutomaticUniforms)3.在着色器中如何使用3.1.点云3.2.冯氏着色法3.3.地球3.4.模型架构中的光着色阶......
  • Pake 基于rust 开发的快速web 页面打包app 的工具
    Pake利用了tauri可以实现web页面快速打包桌面app说明对于希望快速打开一个桌面应用的场景,Pake还是值得试用的参考资料https://github.com/tw93/Pake......
  • Unique Snowflakes uva11572
    找最长的,没有相同元素的区间 双指针#include<iostream>#include<set>usingnamespacestd;constintN=1e6+2;intn,a[N];voidsolve(){ intx=1,y=1,ans=0; set<int>st; while(y<=n){ while(y<=n&&!st.count(a[y]))s......
  • APP爬虫初阶之Pixel2刷机root
    pixel2刷机刷机准备lineageziptwrpimgmagiskzip(github上下的是APK,需要把后缀改为zip)刷机步骤首先需要一个底包,这里我用的出厂自带的google官方系统,没有重新刷入手机上打开usb调试,关闭屏幕超时锁屏,打开OEM锁手机完全关机,按住向下键重启(或者通过adbrebootbootl......
  • Hugging News #0414: Attention 在多模态情景中的应用、Unity API 以及 Gradio 主题构
    每一周,我们的同事都会向社区的成员们发布一些关于HuggingFace相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「HuggingNews」,本期HuggingNews有哪些有趣的消息,快来看看吧!社区动向Attention在视觉领域的应用注......
  • uniapp面试题
    1.uniapp进行条件编译的两种方法?小程序端和H5的代表值是什么?通过#ifdef、#ifndef的方式H5:H5MP-WEIXIN:微信小程序2.uniapp的配置文件、入口文件、主组件、页面管理部分pages.json配置文件main.js入口文件App.vue主组件pages页面管理部分3.uniapp上传文件时用到a......
  • Deep graph clustering with enhanced feature representations for community detec
    论文阅读03-EFR-DGC:EnhancedFeatureRepresentationsforDeepGraphClustering论文信息论文地址:Deepgraphclusteringwithenhancedfeaturerepresentationsforcommunitydetection|SpringerLink论文代码:https://github.com/grcai/DGC-EFR1.存在问题DAEGC在处理......
  • tinymce封装成vue3组件
    封装成组件<scriptsetup>importEditorfrom'@tinymce/tinymce-vue'//引入tinymce开启本地模式import'tinymce/tinymce'//引入图标和主题等import'tinymce/themes/silver/theme'import'tinymce/icons/default/icons'import'tin......