vue2,3,小程序,uniapp的API请求封装统一管理请求接口

这篇具有很好参考价值的文章主要介绍了vue2,3,小程序,uniapp的API请求封装统一管理请求接口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

 微信小程序

request.js

api.js页面 

页面使用 

 uniapp

request.js封装公共请求头

api.js里面存放api方法

在页面引入方法

vue2、3

request.js封装公共请求头

api.js文件

页面引入


 

uniapp vue3 请求封装,javascript,前端,java

 微信小程序

request.js

// 引入env中的url
const baseUrl = "http://www.com"; // 测试地址
module.exports = {
  /**
   * url:请求的接口地址
   * method:请求方式 GET,POST....
   *  data:要传递的参数
   */
  request: (obj) => {
    // console.log('这是我封装的ajax请求', baseUrl+obj.url);
    //这里使用ES6的写法拼接的字符串
    let _url = `${baseUrl}${obj.url}`;
    // console.log("请求信息",obj);
    return new Promise((resolve, reject) => {
      wx.showLoading({
        title: "正在加载",
      });
      wx.request({
        url: _url,
        data: obj.data,
        method: obj.method,
        header: {
          "content-type": "application/x-www-form-urlencoded",
          token: wx.getStorageSync("token"), //获取保存的token 项目请求接口需要token不需要就不写
        },
        success: (res) => {
          // console.log('从接口获取到的数据', res);
          resolve(res.data);
          wx.hideLoading();
          // wx.showToast({
          //   icon: "none",
          //   title: res.data.msg,
          // });
        },
        fail() {
          wx.hideLoading();
          reject("接口请求错误,请检查");
        },
      });
    });
  },
};

api.js页面 

//引入封装的reuest请求
const {
  request
} = require("./request.js");
//基于业务封装的接口
module.exports = {
  // 获取openid
  get_openidApi(data) {
    return request({
      url: "/api/wechat_notice/get_openid",
      method: "GET",
      method: "POST",
      data,
    });
  },
  // 登录操作
  loginApi(data) {
    return request({
      url: "/api/index/login",
      method: "POST",
      data,
    });
  },
  // 几天时间筛选
  time_arrayApi() {
    return request({
      url: "/api/index/time_array",
      method: "GET",
    });
  },
};

页面使用 

引入

注意:微信小程序里面默认不能使用绝对路径,要使用../../../这样引入,层级过多不方便,建议配置绝对路径

微信小程序设置绝对路径方法

const {
  loginApi,
  get_openidApi
} = require('@/utils/api.js')

请求 

  login() {
    // 在登录事件里面请求这个接口
    if (this.data.account && this.data.password) {
      loginApi({
        account: this.data.account,
        password: this.data.password
      }).then((res) => {
        console.log(res);
        if (res.code == 1) {
          wx.setStorageSync('token', res.data.userinfo.token)
          wx.setStorageSync('account', this.data.account)
          wx.setStorageSync('password', this.data.password)
          // 登录成功 跳转到首页
          wx.switchTab({
            url: '/pages/index/index',
          })
        } else {
          Toast(res.msg);
        }
      })
    } else {
      Toast('请输入账号密码!');
    }
  },

 uniapp

request.js封装公共请求头

/* 
		@parms url 接口地址
		@parms method 请求方式
		@parms data 参数
 */
const BASE_URL = "http://192.168.1.2:9999" //公共请求头地址
const imgApi='http://kinggo.icu:7777/upload'// 上传接口
const request = (url, method, data) => {
	let token = uni.getStorageSync('token') //token
	// console.log("token:", token);
	return new Promise((resolve, reject) => {
		uni.request({
			url: BASE_URL + url, // 开发者服务器接口地址
			method: method,//请求方式
			timeout: 60000, //请求超时时间
			data: data, //请求的参数
			header: { //设置请求的 header
			    'Content-Type': 'application/json',
				'token': token, //自定义请求头信息token
			},
			success(res) { //对请求请求到的信息进行处理
				console.log(res.data)
				if (res.data.code == 200 || res.data.code == 500) {
					resolve(res.data)
					if (res.data.token) {//更新token
						uni.setStorageSync("token", res.data.token)
					}
				} else if (res.data.code == 600) {
					// uni.showToast({
					// 	title: '身份验证过期,请重新登录',
					// 	icon: 'none'
					// });
					uni.navigateTo({
						url: "/pages/login/login"
					})
				} else {
					// uni.showToast({
					// 	title: '请求失败,请重新获取数据',
					// 	icon: 'none'
					// });
					uni.navigateTo({
						url: "/pages/login/login"
					})
				}
			},
			fail(err) {
				reject(err)
			}
		})
	})
}

export default {
	request,imgApi //向外暴露request
}

api.js里面存放api方法

import request from './request.js' //引入request.js
const api = request
export default {
	// 手机号或id加密码登录
	getLogin: (username, password) => {
		let user = api.request('/logins', 'POST', {
				"po": username,
				"pwd": password,
			})
			.then(res => {
				// console.log(res); //正常的数据
				return res
			})
		return user
	},
	// 验证码登录
	codeLogin: (username, code) => {
		let user = api.request('/LoginRegister', 'get', {
				"po": username,
				"code": code,
			})
			.then(res => {
				// console.log(res); //正常的数据
				return res
			})
		return user
	}
}

在页面引入方法

import Api from "@/API/api.js";

使用方法

async login() {
                let user = await Api.codeLogin(this.username, this.password);
            }

vue2、3

request.js封装公共请求头

import axios from 'axios'
import {ElMessage} from 'element-plus'

export const request = (options) => {
    return new Promise((resolve, reject) => {
        // create an axios instance
        const service = axios.create({
            // baseURL: process.env.BASE_API, // api 的 base_url
            baseURL: 'http://xxx.com',//测试地址
            timeout: 80000 // request timeout
        })
        // request interceptor
        service.interceptors.request.use(
            config => {
                if (sessionStorage.getItem('token')) {
                    config.headers['token'] = sessionStorage.getItem('token')
                }
                return config
            },
            error => {
                // Do something with request error
                Promise.reject(error)
            }
        )
        // response interceptor
        service.interceptors.response.use(
            response => {
                return response.data
            },
            error => {
                if (error.response.data.code === 401) {
                    ElMessage.error('请登录后在操作')
                    setTimeout(function () {
                        sessionStorage.clear()
                        location.reload()
                    }, 1000)
                }else if (error.response.data.code === 500){
                    ElMessage.error('服务器请求错误,请稍后再试')
                }else{
                    ElMessage.error('系统错误,请联系管理员')
                }
                return Promise.reject(error)
            }
        )
        // 请求处理
        service(options)
            .then((res) => {
                resolve(res)
            })
            .catch((error) => {
                reject(error)
            })
    })
}
export default request

api.js文件

import {request} from '@/api/request'

// 登录操作
export function login(data) {
    return request({
        url: '/api/index/login',
        method: 'POST',
        data
    })
}


// 获取数据
export function getBranchPosition() {
    return request({
        url: '/api/user/get_branch_position',
        method: 'GET'
    })
}

页面引入

import {login, getBranchPosition} from "@/api";

 请求接口发起请求

async function get_salary() {
  let res = await getBranchPosition({
    staff_id: staff_id.value,
    month_id: time_id.value,
    branch_id: branch_id.value
  })
  console.log(res.data);
  royaltyData.value = res.data.staff
  detailData.value = res.data.detail
}

解构写法文章来源地址https://www.toymoban.com/news/detail-770248.html

async function get_salary() {
   let staff_id= staff_id.value,
   let month_id= time_id.value,
   let branch_id= branch_id.value
  let res = await getBranchPosition({
    staff_id,
    month_id,
    branch_id
  })
  console.log(res.data);
  royaltyData.value = res.data.staff
  detailData.value = res.data.detail
}

到了这里,关于vue2,3,小程序,uniapp的API请求封装统一管理请求接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp 微信小程序请求拦截器 接口封装

    前言: 请求拦截器可以在我们需要传递请求头的时候使用,例如:token 也会在当token发生变化的时候给予响应,所以我们做好对应的判断即可 1.首先在根目录创建common文件夹, 在里面创建request.js文件并加入以下代码: 2,在common文件夹下接着新建一个example.js文件来当作接口

    2024年01月23日
    浏览(46)
  • uniapp 微信小程序 封装公共的请求js(api版本)

    一、新建api文件夹 在项目目录下创建api文件夹,内放files跟index.js文件夹,files文件夹内放每个页面对应的js请求接口 1、index.js 2、例如:login.js 二、config.js 三、main.js 四、页面使用

    2024年02月14日
    浏览(47)
  • 接口自动化测试:Requests统一请求封装(框架的封装)

    一、为什么要做统一请求封装? 1. 去除很多重复的、冗余的代码; 2.  异常处理和日志监控: 设置统一的公共参数、统一的文件处理、统一的异常处理、统一的日志监控、统一的用例断言等; 3. 跨py文件实现通过一个session自动管理有cookie关联的接口;               

    2024年01月24日
    浏览(55)
  • vue2使用axios封装请求数据,教会你封装,简单易懂,轻松学会axios封装请求数据 看一眼就会 手把手教会

    2、完成上面的步骤还不够,还需要再创建一个文件夹api,然后在文件夹里面创建自定义的文件名(我创建的是cartApi.js)文件名根据自己的需求命名 下面就是根据自己的请求接口以及数据参数请求,下面的请求是一些常见的post、get请求以及传参啥的(仅供参考,可以参考下面

    2024年01月24日
    浏览(52)
  • 前端vue2中axios封装请求数据,教会你封装教会你请求数据 简单易懂,轻松学会axios封装请求数据 看一眼就会 手把手教会

    2、完成上面的步骤还不够,还需要再创建一个文件夹api,然后在文件夹里面创建自定义的文件名(我创建的是cartApi.js)文件名根据自己的需求命名 下面就是根据自己的请求接口以及数据参数请求,下面的请求是一些常见的post、get请求以及传参啥的(仅供参考,可以参考下面

    2024年02月03日
    浏览(45)
  • uniapp开发笔记(1)——uview API接口请求

    在请求后端的时候,需要带请求头去访问,在uview里写了http请求可以传递的参数:详情参考:Http请求 | uView 2.0 - 全面兼容nvue的uni-app生态框架 - uni-app UI框架 实战代码示例:  在项目中,请求接口的时候,要做的是渲染列表,有的时候要给后台发一个参数,在点击某个数据的

    2024年02月17日
    浏览(39)
  • Vue 封装ajax请求[接口]函数

             在Vue项目开发当中,当有了后端提供的数据接口之后呢,就需要来为接口定义接口的请求函数,那么在去定义接口函数之前可以先来封装一个ajax请求函数;可能有的初学者在之前的一些篇目当中看到这个vue发起数据请求的不是使用axios的吗?这个确实没有问题,在

    2024年02月08日
    浏览(37)
  • vue3 封装api接口

    新建axiosj.ts 新建状态码文件: 导出案例    export function login  (params) {      return request(\\\'/admin-api/system/auth/login\\\',params, \\\'post\\\')    } 使用  

    2024年02月16日
    浏览(30)
  • uniapp+uview封装小程序请求

    uniapp项目引入uview库 此步骤不再阐述  env.js: 该封装文件对后端接口返回格式有规范要求 如接口格式跟封装文件不匹配 可通过 request.js 中响应拦截进行修改  接口返回格式示例: request.js: 在根目录main文件内引入  以为 login.js 为例 该POST登录请求的 login函数名  需对应第二

    2024年02月13日
    浏览(36)
  • 【小程序】网络请求API介绍及网络请求的封装

    网络请求基本演练 微信提供了专属的API接口,用于网络请求: wx.request(Object object) 属性 类型 默认值 必填 说明 url string 是 开发者服务器接口地址 data string/object/ArrayBuffer 否 请求的参数 header Object 否 设置请求的 header,header 中不能设置 Referer。 content-type 默认为 application/json tim

    2023年04月09日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包