news 2026/9/8 16:51:09

uniapp 微信小程序请求规范

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
uniapp 微信小程序请求规范

思路是首先是main.js需要将请求接口全部放在vuex里面

// 初始API配置

initApi(store);

export const initApi = (store) => { for (let i = 0; i < API.length; i++) { let item = API[i]; // 用item.name名作为作为调用方法 /* return response Promise */ // 设置请求前缀名 item.url = `${config.prefix}${item.url}`; https[item.name] = (param = {}, config = {}) => { // 赋值客户端类型 默认 cloud config.headersConfig = { "client-type": item.clientType || "app", }; return setMethods(item, param, config); }; } // console.log(https) // 请求 注入vuex store.commit("setHttps", https); // 设置请求响应 request(instance); response(instance); };
export default createStore({ state: { // 请求接口配置项 https: {}, // 网页固定跳转地址 webUrls: { // 关于我们 aboutUs: "aboutUs.html", // 隐私协议 privacyAgreement: "privacyAgreement.html", // 服务协议 serviceAgreement: "serviceAgreement.html", }, }, mutations: { // 设置请求函数 setHttps(state, res) { state.https = res; }, }, actions: {}, getters: { getHttps: (state) => state.https, getUserInfo: (state) => state.userInfo, getWebUrls: (state) => state.webUrls, }, modules: { mainModules, mineModules, evaluateModules, elderlyModules, deviceModules : createModules( deviceApi ), homeModules : createModules(homeApi), serviceModules : createModules( serviceApi ), nswhModules }, });

// 请求 注入vuex

store.commit("setHttps", https);

告诉 Vuex:调用setHttps这个修改方法,把https放进 Vuex 的 state 里

就是触发mutations

setHttps(state, res) {

state.https = res;

}

import mainApi from "./mainApi"; import mineApi from "./mineApi"; export default [ ...mainApi, ...mineApi, ];

可以写在index里面把其他的导入进来

https = { getDeviceList: function(param, config) { config.headersConfig = { "client-type": "app" }; return setMethods(...); }, getDeviceDetail: function(param, config) { config.headersConfig = { "client-type": "app" }; return setMethods(...); }, login: function(param, config) { config.headersConfig = { "client-type": "app" }; return setMethods(...); } }

config.headersConfig = {

"client-type": item.clientType || "app",

};加上请求头说明app

判断是文件、表单、还是json格式设置不同的请求头

if (isFile) { //文件 Object.assign(config.headers, { "content-type": "multipart/form-data", }); } else { if (isFormData) { Object.assign(config.headers, { "content-type": "application/x-www-form-urlencoded", }); } else { Object.assign(config.headers, { "content-type": "application/json", }); } }

还有就是要根据的直接在路由上拼接或者是query或者是body,(表单、json、上传文件)

一次接口请求

├── ① 参数直接拼到 URL 路径
│ 例如:/user/100

├── ② 参数放到 Query
│ 例如:/user?id=100

└── ③ 参数放到 Body

├── JSON
│ {"id":100}

├── 表单
│ id=100&name=张三

└── 文件上传
文件 + 其他字段

query的转换方法

export const paramToStr = (data) => { if (!data) { return ""; } return Object.keys(data) .map((item) => `${item}=${data[item]}`) .join("&"); };

body表单body转换

npm install qs

qs.stringify(param)

data: qs.stringify(param)

后端要求某个“固定参数”必须放 URL 上,但其他业务参数放 Body。

url: url + (queryAfterString ? `?${queryAfterString}` : ""),

import { UniAdapter } from "uniapp-axios-adapter";

uniapp-axios-adapter

一个第三方 npm 包

UniAdapter

这个包提供的一个适配器

“别直接按照默认方式发请求,改用 UniApp 的请求方式来发。”

uniapp也就直接可以使用axios不用request

main.js

initApi(store)

读取 API 接口配置数组

把每个接口生成成函数

https = {
xxx() {},
xxx() {},
xxx() {}
}

store.commit("setHttps", https)

Vuex state.https

页面可以拿到 API

setMethods()

┌─────────────┼─────────────┐
↓ ↓ ↓
Path Query Body
/user/100 ?id=100 ↓
┌────────┼────────┐
↓ ↓ ↓
JSON 表单 文件

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 16:50:26

GitNexus架构解析:如何用工程化机制让AI改代码不失控

开头&#xff1a;当AI把“改一行代码”变成“炸掉整个服务” 如果你最近几年一直在用AI写代码、改代码&#xff0c;大概率碰过这种场景&#xff1a;让AI修一个很小的bug&#xff0c;它非常自信地给你改了一行配置&#xff0c;你觉得没问题就合了&#xff0c;结果线上服务直接起…

作者头像 李华
网站建设 2026/9/8 16:49:41

一串“9”为何能炸穿系统?边界值测试与输入校验实战解析

先问你一个问题&#xff1a;如果你的用户注册接口收到一个字段叫 phone&#xff0c;值是一串99999999999999&#xff0c;你的第一反应是什么&#xff1f;拉黑&#xff1f;直接报错&#xff1f;还是默默存库&#xff1f;我之所以想写这篇东西&#xff0c;是因为这串看起来像键盘…

作者头像 李华
网站建设 2026/9/8 16:49:17

Dirty Coding Tricks:四个偏门技巧提升代码效率与性能

Dirty Coding Tricks 这个系列写到现在已经是第三篇了&#xff0c;后台一直有人在问同一个问题&#xff1a;到底什么样的代码才算 dirty&#xff1f;我的回答一直没变——不是让你写烂代码&#xff0c;不是教你把项目搞成一坨只有自己能看懂的浆糊&#xff0c;而是指那些第一眼…

作者头像 李华
网站建设 2026/9/8 16:47:01

优化器选型与调参实战:从AdamW到Lion的避坑指南

上个月我把一个视觉模型的训练任务从 AdamW 切到另一个优化器&#xff0c;loss 曲线肉眼可见地往下掉&#xff0c;可 validation 指标却纹丝不动。同事看了一眼训练日志&#xff0c;随口说了一句&#xff1a;“这 Optimizer 挺有意思&#xff0c;不过你是不是没搞清楚它到底在优…

作者头像 李华
网站建设 2026/9/8 16:46:58

鸿蒙设备街机模拟器完整指南:从选型到ROM配置与手柄调试

前阵子在平板上折腾街机模拟器&#xff0c;发现鸿蒙设备相关的零散资料特别多&#xff0c;但真正能讲清楚"怎么选、去哪下、装完怎么调"的少之又少。很多人一上来就搜"鸿蒙街机模拟器app下载"&#xff0c;结果下了一堆来路不明的安装包&#xff0c;要么闪退…

作者头像 李华