uni-app请求后台接口方法封装

本文介绍了uni-app中如何封装和使用后台接口的方法,包括新建api和util文件夹,封装缓存、请求和环境变量,以及在main.js中的全局配置。详细阐述了在各平台运行时网络API的配置,提供了uni.request方法的参数说明和使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

uni-app中方法整理之请求后台接口。个人封装版本与官方提供方法。

官方入口:

封装版本:目录见下

1、新建文件夹api,这里主要放接口信息

login.js 放登录页面的接口方法

import axios from '../util/http'
const Login = {
	 // 获取验证码
	goPhoneCode(params) {
	  return axios({
		method:'get',
		url:`/phoneCode`,
		params:params
	  })
	},
}
export default Login

index.js 注册所有的接口方法

/**
 * api接口的统一出口
 */
import common from './common'
import login from './login'

export default {
  common,
  login,
}

2、新建util文件夹,并新建三个文件

auth.js 封装的缓存方法

const TokenKey = 'uni_token';

// 认证令牌
export function getToken() {
	return uni.getStorageSync(TokenKey)
}

export function setToken(token) {
	return uni.setStorageSync(TokenKey, token)
}

export function removeToken() {
	return uni.removeStorageSync(TokenKey)
}

http.js 封装的请求接口方法

import {getToken,removeToken} from './auth';
import env from './env';


// 封装数据返回成功提示函数------------------------------------------------------
function successState(res) {
  let code = res.data.code;
	console.log('@return-data:')
	console.log(res)
	//公共报错提醒
	if(code !== 200){
		// 非成功状态码弹窗
		uni.showToast({
			icon: 'none',
			duration: 3000,
			title: `${res.data.msg}`
		});
	}
  // 登陆失效
  if (res.data.code === 403) {
  	// 清除本地token
  	removeToken()
  	// 关闭所有页面返回到登录页
  	uni.reLaunch({
  		url: '/pages/login/login'
  	})
  }
  console.log('/------http(END)------/')
	
  return res
}
// 封装数据返回失败提示函数------------------------------------------------------
function errorState(err) {
  // 请求失败弹窗
  uni.showToast({
  	icon: 'none',
  	duration: 3000,
  	title: '服务器错误,请稍后再试'
  });
  console.log('/------http(END)------/')
}


// 封装axios---------------------------------------------------------------------
function service(options = {}) {
	options.url = `${env.baseUrl}${options.url}`;
	// 判断本地是否存在token,如果存在则带上请求头
	if (getToken()) {
		options.header = {
			'content-type': 'application/json',
			'authorization': `${getToken()}`	// 这里是token
		};
	}
	console.log('/------http(START)------/')
  console.log('@all-url:')
  console.log(options.url)
  console.log('@params:')
  console.log(options)
	
	return new Promise((resolved, rejected) => {
		options.success = (res) => {
			successState(res)
			resolved(res)
		};
		options.fail = (err) => {
			errorState(err)
			rejected(err);
		};
		uni.request(options);
	});
}

export default service;v

env.js 公共baseurl 地址 与其他变量

"use strict";
/**
 * 	appid : 		小程序appid
 *  baseUrl : 		服务端域名
 */
export default {
	appid: '****',
	baseUrl: 'http://***.70.94.135:7001'
}

3、main.js中全局配置

//接口
import api from './api'
Vue.prototype.$api = api

4、页面中具体使用

mounted() {
		this.getLoginCap()
	},
	methods: {
		//获取验证码
		getLoginCap(){
			let phone = '13519102731'
			this.$api.login.goPhoneCode({phone}).then(res=>{
					debugger
				if(res.data.code == 200){
				}
			})
		}
	}

打开 f12 的console.log,可以看到具体的地址,参数和返回值

官方提供方法:点我直接进入

uni.request(OBJECT)

在各个小程序平台运行时,网络相关的 API 在使用前需要配置域名白名单。

OBJECT 参数说明

参数名

类型

必填

默认值

说明

平台差异说明

url

String

开发者服务器接口地址

data

Object/String/ArrayBuffer

请求的参数

App不支持ArrayBuffer类型

header

Object

设置请求的 header,header 中不能设置 Referer。

App、H5端会自动带上cookie,且H5端不可手动修改

method

String

GET

有效值详见下方说明

timeout

Number

60000

超时时间,单位 ms

H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)、微信小程序(2.10.0)、支付宝小程序

dataType

String

json

如果设为 json,会尝试对返回的数据做一次 JSON.parse

responseType

String

text

设置响应的数据类型。合法值:text、arraybuffer

支付宝小程序不支持

sslVerify

Boolean

true

验证 ssl 证书

仅App安卓端支持(HBuilderX 2.3.3+),不支持离线打包

withCredentials

Boolean

false

跨域请求时是否携带凭证(cookies)

仅H5支持(HBuilderX 2.6.15+)

firstIpv4

Boolean

false

DNS解析时优先使用ipv4

仅 App-Android 支持 (HBuilderX 2.8.0+)

success

Function

收到开发者服务器成功返回的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

method 有效值

注意:method有效值必须大写,每个平台支持的method有效值不同,详细见下表。

method

App

H5

微信小程序

支付宝小程序

百度小程序

字节跳动小程序、飞书小程序

GET

POST

PUT

x

DELETE

x

x

CONNECT

x

x

x

x

HEAD

x

x

x

OPTIONS

x

x

TRACE

x

x

x

x

success 返回参数说明

参数

类型

说明

data

Object/String/ArrayBuffer

开发者服务器返回的数据

statusCode

Number

开发者服务器返回的 HTTP 状态码

header

Object

开发者服务器返回的 HTTP Response Header

cookies

Array.<string>

开发者服务器返回的 cookies,格式为字符串数组

data 数据说明

最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String。转换规则如下:

  • 对于GET方法,会将数据转换为 query string。例如{ name: 'name', age: 18 }转换后的结果是name=name&age=18
  • 对于POST方法且header['content-type']application/json的数据,会进行 JSON 序列化。
  • 对于POST方法且header['content-type']application/x-www-form-urlencoded的数据,会将数据转换为 query string。
uni-app是一个基于Vue.js的跨平台框架,用于构建一次编写、多端运行的应用,包括Web、App小程序等。封装请求后台通常是为了简化开发者处理网络请求的过程,提高代码复用性和可维护性。 在uni-app中,你可以创建一个统一的HTTP请求库或者使用其内置的API网关(如`u-request`),步骤如下: 1. **引入依赖**:首先,你需要导入uni-app提供的`request`对象,例如在`app.vue`或全局组件中: ```javascript import { request } from '@dcloudio/uni-app'; ``` 2. **封装函数**:创建一个基础的请求函数,设置默认配置,如超时时间、headers等: ```javascript const handleRequest = async (options) => { options.timeout || (options.timeout = 5000); // 设置默认超时时间 return await request(options); }; ``` 3. **添加错误处理**:为了更好地处理响应结果和错误,可以在`handleRequest`内部添加错误处理逻辑: ```javascript const handleResponse = async (options) => { try { const response = await handleRequest(options); return response.data; // 返回解析后的数据 } catch (error) { console.error('请求出错', error); throw new Error(error.message); } }; ``` 4. **实际调用**:现在你可以在项目各处调用`handleResponse`,传入具体的URL、方法(GET、POST)、数据等内容: ```javascript const getData = async () => { const result = await handleResponse({ url: '/api/data', method: 'GET', }); return result; }; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值