请求后端接口全攻略:通用封装 + 请求拦截器,一篇就够!
在 UniApp 中与后端接口交互最常用的方式是 uni.request
,但如果你每次都手动调用、拼地址、写 headers,会非常冗余、易错。
本文将手把手带你:
• 掌握 uni.request
的基本用法• 封装通用请求方法 • 加入请求/响应拦截器(如 token 注入、统一错误处理)
uni.request
基础用法
uni.request({ url: 'https://api.example.com/user', method: 'GET', data: { id: 1 }, success: (res) => { console.log('响应数据:', res.data) }, fail: (err) => { console.error('请求失败:', err) } })
默认支持所有平台,包括 H5、小程序、App。
封装通用 request 方法
我们创建一个统一的 request.js
工具模块,集中处理:
• 基础 URL 拼接 • 请求方法封装(get/post 等) • token 注入(请求拦截器) • 状态码统一处理(响应拦截器)
文件目录结构推荐
├── utils/ │ └── request.js # 请求封装模块 ├── config/ │ └── index.js # 全局配置项,如 baseURL
config/index.js
:配置项
export default { baseURL: 'https://api.example.com', timeout: 10000 }
utils/request.js
:通用封装
import config from '@/config/index.js' import { get } from './storage.js' // 用于获取 token 等缓存 const request = (options = {}) => { const { url, method = 'GET', data = {}, headers = {} } = options return new Promise((resolve, reject) => { uni.request({ url: config.baseURL + url, method, data, timeout: config.timeout, header: { 'Content-Type': 'application/json', 'Authorization': get('token') || '', // 请求拦截器:自动加 token ...headers }, success: (res) => { const { statusCode, data } = res // 响应拦截器 if (statusCode === 200) { resolve(data) } else { uni.showToast({ title: data.message || '请求错误', icon: 'none' }) reject(data) } }, fail: (err) => { uni.showToast({ title: '网络异常', icon: 'none' }) reject(err) } }) }) } // 快捷方法封装 export const getRequest = (url, data = {}) => request({ url, data, method: 'GET' }) export const postRequest = (url, data = {}) => request({ url, data, method: 'POST' }) export default request
使用方式(更优雅)
示例页面中使用
import { getRequest, postRequest } from '@/utils/request.js' // 获取用户信息 getRequest('/user/info').then(res => { console.log('用户信息:', res) }) // 提交表单 postRequest('/form/submit', { name: 'Tom' }).then(res => { uni.showToast({ title: '提交成功' }) })