UNI-APP 请求封装API集中管理

让GPT封装了一个网络请求

// api.js

import {
	sendRequest
} from './request.js';

export const getHome = () => sendRequest('/computer/home', 'GET');;

export const post = (userData) => sendRequest('/computer/hello', 'POST', userData);

拦截器获取用户的code在header中发送给服务端,如果服务端拿到了openid给客户端返回数据

// request.js
const sendRequest = (url, method, data) => {
	
	const base_url = 'http://192.168.1.4:810/api' + url;
	
	return new Promise((resolve, reject) => {
		// 拦截器 - 请求之前
		beforeRequestInterceptor(base_url, method, data, resolve, reject);
	});
};

// 拦截器 - 请求之前
const beforeRequestInterceptor = (base_url, method, data, resolve, reject) => {
	// 获取小程序用户的code
	uni.login({
		success: (res) => {
			const code = res.code;

			if (code) {
				// 根据需要处理code,比如保存到本地存储或发送到后端验证

				// 执行请求
				executeRequest(base_url, method, data, code, resolve, reject);
			} else {
				// 获取code失败,不执行请求
				reject(new Error('Failed to get code.'));
			}
		},
		fail: (err) => {
			// 获取code失败,不执行请求
			reject(err);
		},
	});
};

// 执行请求
const executeRequest = (base_url, method, data, code, resolve, reject) => {
	uni.request({
		url: base_url,
		method: method,
		data: data,
		header: {
			'Content-Type': 'application/json',
			'Code': code,
		},
		success: (res) => {
			// 拦截器 - 请求成功后
			afterRequestSuccessInterceptor(res.data);

			resolve(res.data);
		},
		fail: (err) => {
			// 拦截器 - 请求失败后
			afterRequestFailureInterceptor(err);

			reject(err);
		},
	});
};

// 拦截器 - 请求成功后
const afterRequestSuccessInterceptor = (data) => {
	// 在这里执行请求成功后的操作,比如处理返回的数据等
};

// 拦截器 - 请求失败后
const afterRequestFailureInterceptor = (error) => {
	// 在这里执行请求失败后的操作,比如处理错误信息等
};

export {
	sendRequest
};

Main.Js中注册

import * as api from '@/common/api/api.js';


Vue.prototype.$api = api;

使用

//Get请求
this.$api.getHome().then((data) => {
    console.log(data); // 请求成功时的处理逻辑
}).catch((error) => {
    console.error(error); // 请求失败时的处理逻辑
});

//Post请求

const userData = {
    name: 'John',
    age: 30,
    id:1,
};
			
self.$api.post(userData).then((data) => {
    console.log(data); // 请求成功时的处理逻辑
}).catch((error) => {
    console.error(error); // 请求失败时的处理逻辑
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Uni-app 是一个跨平台的开发框架,可以用于同时开发多个平台的应用程序。在 Uni-app 中进行网络请求时,可以使用封装的方式来简化请求过程,提高代码的复用性和可维护性。 以下是一个简单的示例,展示了如何封装一个网络请求方法: ```javascript // api.js // 导入uni-app的网络请求方法 import { request } from 'uni-app'; // 封装网络请求方法 export function get(url, data) { return request({ url: url, method: 'GET', data: data }); } export function post(url, data) { return request({ url: url, method: 'POST', data: data }); } ``` 在上述示例中,我们将 uni-app 提供的 `request` 方法进行了封装,创建了 `get` 和 `post` 方法,分别用于发起 GET 和 POST 请求。这样做的好处是可以统一处理请求的配置,例如设置请求头、处理响应等。 使用封装的网络请求方法时,只需在需要发送请求的地方引入 `api.js` 文件,并调用相应的方法即可: ```javascript // 使用网络请求方法 import { get, post } from './api.js'; // 发起 GET 请求 get('/api/data', { id: 1 }) .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); // 发起 POST 请求 post('/api/login', { username: 'admin', password: '123456' }) .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); ``` 通过封装网络请求方法,我们可以更方便地调用和管理网络请求,提高开发效率。当需要修改请求配置时,只需要在封装的方法中进行修改,而不需要在每个请求的地方都修改一遍。同时,封装后的代码也更易读、易维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值