nuxt3模块化API架构

nuxt3模块化API架构

composables/useApi.js(核心 composable)↓ 统一底层 api/modules/ ├── projects.js → 基于 useApi()实现 ├── categories.js → 基于 useApi()实现 ├── types.js → 类型定义 └── api.js → 统一导出入口 ↓ Vue 组件调用 pages/*.vue →import{getProjects}from'~/api/projects'

优势

符合 Nuxt3 最佳实践- 使用 composable 模式

模块化组织- 按业务模块分离

向后兼容- Vue 组件调用方式无需修改

代码精简- 删除了冗余的未使用模块

统一底层- 所有 API 调用都基于useApi()

Vue 组件中的调用方式:

import{getProjects}from'~/api/projects'constresponse=awaitgetProjects(params)

附上composables/useApi.js

// composables/useApi.js// 使用 Composable 模式封装 API 请求,符合 Nuxt3 最佳实践import{ofetch}from'ofetch'/** * API Composable Hook * @returns {Object} API 请求方法和工具函数 */exportconstuseApi=()=>{constconfig=useRuntimeConfig()constAPI_BASE_URL=config.public.expressApiUrl||'http://localhost:3001'// 从 localStorage 获取 tokenconstgetToken=()=>{if(import.meta.client){returnlocalStorage.getItem('token')}returnnull}// 创建请求选项constcreateRequestOptions=(customOptions={})=>{consttoken=getToken()constoptions={baseURL:API_BASE_URL,timeout:10000,headers:{'Content-Type':'application/json',...(token&&{Authorization:`Bearer${token}`})},onRequestError:(error)=>{console.error('❌ Request Error:',error)throwerror},onResponseError:({response,error})=>{console.error('❌ Response Error:',error)// 统一错误处理if(response){const{status}=responseconstdata=response._data||{}switch(status){case401:// 未授权,清除 tokenif(import.meta.client){localStorage.removeItem('token')}breakcase403:console.error('没有权限访问')breakcase404:console.error('请求的资源不存在')breakcase500:console.error('服务器内部错误')break}error.message=data?.message||error.message}else{error.message='网络连接失败,请检查网络设置'}throwerror}}return{...options,...customOptions}}// 通用 API 请求函数constrequest=async(config)=>{const{method,url,params,data,...otherOptions}=configconstoptions=createRequestOptions(otherOptions)// 构建完整 URLletfullUrl=urlif(params){constsearchParams=newURLSearchParams(params)constqueryString=searchParams.toString()constseparator=fullUrl.includes('?')?'&':'?'fullUrl=`${url}${separator}${queryString}`}// 添加请求体if(data&&['post','put','patch'].includes(method?.toLowerCase())){options.body=data}// 开发环境日志if(import.meta.client&&window.location.hostname==='localhost'){console.log(`🚀 API Request:${method?.toUpperCase()}${url}`,{params,data,})}try{constresponse=awaitofetch(fullUrl,{...options,method:method?.toLowerCase()})// 开发环境日志if(import.meta.client&&window.location.hostname==='localhost'){console.log(`✅ API Response:${method?.toUpperCase()}${url}`,response)}returnresponse}catch(error){console.error('API 请求错误:',error)throwerror}}// HTTP 方法封装constget=(endpoint,params)=>request({method:'GET',url:endpoint,params})constpost=(endpoint,data)=>request({method:'POST',url:endpoint,data})constput=(endpoint,data)=>request({method:'PUT',url:endpoint,data})constdel=(endpoint)=>request({method:'DELETE',url:endpoint})constpatch=(endpoint,data)=>request({method:'PATCH',url:endpoint,data})// Token 管理consttokenManager={get:getToken,set:(token)=>{if(import.meta.client){localStorage.setItem('token',token)}},remove:()=>{if(import.meta.client){localStorage.removeItem('token')}}}// 导出 ofetch 实例以供特殊情况使用constapiFetch=ofetchreturn{get,post,put,del,patch,tokenManager,request,apiFetch,getBaseUrl:()=>API_BASE_URL}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1158989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分析具身 Agent 的技术特征与发展挑战-分析具身 Agent 的技术特征与发展挑战

分析具身 Agent 的技术特征与发展挑战-分析具身 Agent 的技术特征与发展挑战 近年来,随着机器人技术、多模态感知以及大模型能力的快速发展,具身 Agent(Embodied Agent) 成为人工智能领域的重要研究方向。与传统仅存在于虚拟环境中…

系统找不到msvcrt.dll文件 如何修复? 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

救命神器2026 TOP10 AI论文软件测评:专科生毕业论文救星

救命神器2026 TOP10 AI论文软件测评:专科生毕业论文救星 2026年专科生论文写作工具测评:为何需要这份榜单? 随着AI技术的不断进步,越来越多的学术辅助工具进入高校师生的视野。然而,面对市场上琳琅满目的AI论文软件&am…

学霸同款10个AI论文工具,研究生轻松搞定毕业论文!

学霸同款10个AI论文工具,研究生轻松搞定毕业论文! AI 工具如何成为论文写作的得力助手 在当前学术研究日益数字化的趋势下,AI 工具正逐步成为研究生们不可或缺的写作助手。无论是降低 AIGC 率、优化语言表达,还是提升论文逻辑性与…

系统软件找不到msxml3.dll文件 如何修复? 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

系统软件出现找不到msxml3r.dll 如何修复? 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

客户续签率下滑?这套反馈管理,让客户粘性提高80%

在一次产品增长的闭门会上,有个做B端产品的客户聊到最近的困境——他们团队的产品迭代优化没问题,但在维护付费客户的过程中,发现整体客户满意度不高,续签率更是明显下滑。 调查下来,发现影响续签率的原因之一是——产…

如何判断什么时候需要使用RAG

判断是否需要检索 判断“仅靠模型参数内知识,是否足以可靠回答当前问题”实现方式可以分为 4 大类,从易到难: 规则 / 启发式LLM 自评(最常用)不确定性 / 置信度驱动端到端学习(Self-RAG 的做法&#xff09…

白杨SEO:GEO概念破圈火了,为什么我依旧劝你别轻易丢掉SEO方法?

大家好,我是白杨SEO,专注SEO十年以上,全网SEO流量实战派,AI搜索优化GEO研究者,企业SEO&GEO顾问。昨天A股GEO(生成引擎优化)概念股大涨,再加上前段时罗永浩豆包对话爆火。我微信上…

Python | K折交叉验证的参数优化的RANSAC回归预测及可视化算法

立个flag,这是未来一段时间打算做的Python教程,敬请关注。1 数据及应用领域我的程序中给出数据data.xlsx(代码及数据见文末),10 列特征值,1 个目标值,适用于各行各业回归预测算法的需求&#xf…

腾讯开源WeKnora_IMA框架深度解析

【重磅】腾讯开源 WeKnora(IMA):重新定义企业级智能文档检索在信息爆炸的数字化时代,腾讯正式开源了基于大语言模型的文档理解与语义检索框架——WeKnora(维娜拉)。这款工具将文档解析、智能检索与大模型推…

2026年,3D打印行业开年第一展!

想更快、更全面地了解3D打印,TCT亚洲展是必去之地。第12届TCT亚洲展将于2026年3月17日至19日在上海国家会展中心(7.1 & 8.1馆)盛大举办。经过十二年的积淀,TCT亚洲展已经发展成为亚太地区增材制造领域的旗舰盛会,涵…

怎样用AI技术更快找到合适的客户呢?

理解AI客户获取的基本概念什么是AI客户获取技术?AI客户获取技术,就是利用人工智能销售助手等工具,通过分析数据和算法,帮助我们快速找出合适的客户和管理他们。借助智能获客系统,我们能轻松捕捉到潜在客户的信息&#…

是时候,让数据开口说话,反哺业务了

前言: 在讨论到AI是否可以用来做数据分析和决策时,我想到太古可口可乐的案例—企业问数,但是,其实很多的企业数字化水平,还是处于信息化与数字化交界的地带,因此,今天说说数据在数字化中的情况。…

简单了解下裸金属服务器

裸金属服务器(Bare Metal Server)是一台既具有传统物理服务器特点的硬件设备,又具备云计算技术的虚拟化服务功能,是硬件和软件优势结合的产物,其本质是一台兼具云计算服务功能和提供物理设备性能的服务器。裸金属服务器…

优秀的服务器性能要看哪些方面

服务器性能指标主要看的是速度和稳定性,服务器的性能要求是什么?服务器的多处理器特性、内存容量、磁盘性能及可扩展性是选择服务器要考虑的主要因素。互联网时代的发展服务器的种类也越来越多。服务器的性能要求是什么?运行服务器软件的计算…

题目1103:开心的金明 /题目 1100: 采药

背包问题的模板题#include<iostream> #include<algorithm> using namespace std; int main(){int n,m;cin>>n>>m;int a[25],b[25];int dp[100000];for(int i1;i<m;i){cin>>a[i]>>b[i];}for(int i1;i<m;i){for(int jn;j>a[i];j--)…

Java中接口相关

格式1为默认方法服务&#xff0c;格式2为静态方法服务&#xff0c;用于提取共性内容。 在实现类中抽象方法必须重写&#xff0c;默认方法可重可不重&#xff0c;静态方法不能重写。 接口的应用 适配器设计模式 此时如果实现类有其他父类的解决方式&#xff08;Java中不能多继承…

人工智能将重塑世界

中兴olt c300基本命令以下是中兴OLT C300设备的基本命令分类整理&#xff0c;涵盖设备状态查看、ONU管理、VLAN配置等常用操作&#xff1a;‌一、设备状态与配置查看‌‌系统信息‌show version-running&#xff1a;查看当前运行的软件版本show card&#xff1a;查看板卡状态&a…

深度测评9个一键生成论文工具,继续教育学生轻松搞定论文!

深度测评9个一键生成论文工具&#xff0c;继续教育学生轻松搞定论文&#xff01; AI 工具如何助力论文写作&#xff0c;让学术之路更轻松 在当前的学术环境中&#xff0c;继续教育学生面临越来越多的挑战&#xff0c;尤其是在撰写论文这一环节。随着人工智能技术的不断发展&…