uniapp 微信小程序请求规范

发布时间:2026/9/8 16:51:20
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 }, });// 请求 注入vuexstore.commit(setHttps, https);告诉 Vuex调用setHttps这个修改方法把https放进 Vuex 的 state 里就是触发mutationssetHttps(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?id100│└── ③ 参数放到 Body│├── JSON│ {id:100}│├── 表单│ id100name张三│└── 文件上传文件 其他字段query的转换方法export const paramToStr (data) { if (!data) { return ; } return Object.keys(data) .map((item) ${item}${data[item]}) .join(); };body表单body转换npm install qsqs.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不用requestmain.js↓initApi(store)↓读取 API 接口配置数组↓把每个接口生成成函数↓https {xxx() {},xxx() {},xxx() {}}↓store.commit(setHttps, https)↓Vuex state.https↓页面可以拿到 API↓setMethods()↓┌─────────────┼─────────────┐↓ ↓ ↓Path Query Body/user/100 ?id100 ↓┌────────┼────────┐↓ ↓ ↓JSON 表单 文件

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询