Nuxt3 封装request请求

2024-08-29 23:28
文章标签 封装 请求 request nuxt3

本文主要是介绍Nuxt3 封装request请求,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Nuxt3已经为我们提供了 $fetch 直接用就好

  1. 首先在目录utils下创建 api.js 跟 request.js 两个文件,api文件是用来写具体的接口函数的,request是用来二次封装 $fetch 以达到适配我们项目的需要。
  2. 以下是我的request.js封装代码,可按需要修改
/*** @description 同步请求封装* @param {String} method 请求类型:get,post,delete,put...* @param {String} url  请求地址,不包含请求域名,如:/api/test* @param {Object} options  请求参数* @returns data or error*/
export const apiUse = async (url, method, options) => {// 当前locale将被存储在locale变量中const nuxtApp = useNuxtApp(); // 获取引入nuxt的第三方模块对象const runConfig = useRuntimeConfig(); // 获取环境变量const baseUrl = runConfig.public.baseUrl;const reqUrl = baseUrl + url;options = {method,headers: {"Content-Type": "application/json",},body: { // post 请求参数存放在body内,get请求参数放到params内...options,token: "",platform: "h5",language: nuxtApp.$i18n.locale.value,},};const {data,error} = await useFetch(reqUrl, options);if (error.value) {return error.value;} else {return data.value;}
};/*** @description 异步请求封装* @param {String} method 请求类型:get,post,delete,put...* @param {String} url  请求地址,不包含请求域名,如:/api/test* @param {Object} options  请求参数* @description key 一定要有,否则刷新会造成接口错误*/
export const asyncFetchData = async (url, method, options) => {const nuxtApp = useNuxtApp();const runConfig = useRuntimeConfig();const baseUrl = runConfig.public.baseUrl;const reqUrl = baseUrl + url;const key = url.split('/')[url.split('/').length - 1] //这里取接口最后的名称做keyconst {data,pending,error,refresh} = await useAsyncData(key, () => $fetch(reqUrl, { // useAsyncData也可以用useLazyAsyncData,区别就是useLazyAsyncData会等待SSR渲染完成在执行接口,而useLazyAsyncData是接口执行完成执行SSR渲染method,headers: {"Content-Type": "application/json",},body: {...options,token: "",platform: "h5",language: nuxtApp.$i18n.locale.value,},}));return {data,pending,error,refresh};
}/*** @description 此为apiUse的封装调用实例*/export const fGET = (url, params) => {return apiUse(url, "GET", params);
};export const fPOST = (url, params) => {return apiUse(url, "POST", params);
};export const fPUT = (url, params) => {return apiUse(url, "put", params);
};export const fDELETE = (url, params) => {return apiUse(url, "delete", params);
};/*** @description 此为asyncFetchData的调用实例*/
export const GET = (url, params) => {return asyncFetchData(url, 'GET', params);
};export const POST = (url, params) => {return asyncFetchData(url, "POST", params);
};export const PUT = (url, params) => {return asyncFetchData(url, "put", params);
};export const DELETE = (url, params) => {return asyncFetchData(url, "delete", params);
};
  1. 以下是我的api.js封装代码,可按需要修改
import {GET,POST,PUT,DELETE,fGET,fPOST,fPUT,fDELETE,
} from "./request"/*** @desc 根据Id查询隐私政策等文章* @param params 页面传递过来的参数*/
export const getNotice = (params) => {return POST('/sale/info/detail', params)
}
  1. 页面中使用接口方法

/*** @description 接口在页面中使用教程* 在页面中 不需要再Import 声明接口名,直接使用。因为Nuxt3会自动引用* getNotice 是api.js文件中封装的接口实例,仅需要输入参数即可。* then回调的是接口返回的结果,包含data,pending,error,refresh四种,可根据情况使用*/
getNotice({id: 1
}).then((res) => {const {data,error} = resif (error) {console.log(error.value)}else{console.log(data.value)}
})

这篇关于Nuxt3 封装request请求的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119148

相关文章

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

Go语言中最便捷的http请求包resty的使用详解

《Go语言中最便捷的http请求包resty的使用详解》go语言虽然自身就有net/http包,但是说实话用起来没那么好用,resty包是go语言中一个非常受欢迎的http请求处理包,下面我们一起来学... 目录安装一、一个简单的get二、带查询参数三、设置请求头、body四、设置表单数据五、处理响应六、超

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表