NUXT3.0实现网络请求二次封装

这篇具有很好参考价值的文章主要介绍了NUXT3.0实现网络请求二次封装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

😊最近在开发基于nuxt3.0的项目,看了官网的网络请求,感觉不太适合,就自己基于官网的useFetch()方法封装了一个网络请求,下面开始实现封装。

🚚第一步:新建http.ts文件,用于编写封装代码

我选择在composables目录中新建http.tscomposables是官方默认的插件目录,官方描述:Nuxt 3使用composables/目录使用auto-imports自动将Vue组合导入到应用中!

👇封装代码如下:

/**
*  nuxt项目目录/composables/http.ts
*/
//  基于useFetch()的网络请求封装

//全局基础URL
const BASEURL: string = "http://127.xxx.xxx:3000";  //全局后台服务器请求地址

//定义ts变量类型接口
interface HttpParms {
    baseURL?: string,  //请求的基本URL,即后台服务器地址,(若服务器请求地址只有一个,可不填)
    url: string,      //请求api接口地址
    method?: any,   //请求方法
    query?: any,       //添加查询搜索参数到URL
    body?: any         //请求体
}

/**
 * 网络请求方法
 * @param obj 请求参数
 * @returns 响应结果
 */
export const http = (obj: HttpParms) => {
    const res = new Promise<void>((resolve, reject) => {
        useFetch(
            (obj.baseURL ?? BASEURL) + obj.url,
            {
                method: obj.method ?? "GET",
                query: obj?.query ?? null,
                body: obj?.body ?? null,
                onRequest({ request, options }) {
                    // 设置请求报头
                    options.headers = options.headers || {}
                    /**如果接口需求携带token请求,则可先自行使用官方的useCookie()方法设置Cookie存储后,再使用useCookie()方法,取出token使用。如下例子:*/
                    //const token = useCookie('token')
                    //@ts-ignore
                    //options.headers.Authorization = token.value||null
                },
                onRequestError({ request, options, error }) {
                    // 处理请求错误
                    console.log("服务器链接失败!")
                    reject(error)
                },
                onResponse({ request, response, options }) {
                    // 处理响应数据
                    resolve(response._data)
                },
                onResponseError({ request, response, options }) {
                    // 处理响应错误
                }
            },

        )
    })
    return res;

}

🚀第二步:调用封装

接下来在test.vue中调用封装,如下代码:

<template>
    <div>
        测试页面
    </div>
    <button @click="btn()">请求测试按钮</button>
</template>

<script setup lang="ts">
//引入http.ts封装的网络请求方法
import { http } from '~/composables/http';

const btn = async () => {
    //定义请求参数
    const obj = {
        method: "POST",
        url: '/user/login',
        //"POST"方法传参:
        body: {
            name: "测试",
            phone: "176xxxxxx1",
            password: "test123",
        },
        //"GET"方法URL传参:
        // query: {
        //     name:"test"
        // }
    }
    //开始请求
    let res = await http(obj)
    console.log("请求结果:", res);
}

</script>

🎉第三步:成功!!!接下来就可以看到请求结果了,我们可以打开控制台查看:

NUXT3.0实现网络请求二次封装

至此,我们的nuxt3.0网络请求的简单封装就实现啦🎉🎉🎉!

💡💡💡在这里给在nuxt3.0项目中使用ts的小伙伴一个小提示,注意整个项目中不要使用中文路径哦~记住是完整项目路径都不要有中文!否则会报错!文章来源地址https://www.toymoban.com/news/detail-437317.html

到了这里,关于NUXT3.0实现网络请求二次封装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Nuxt3】modules目录和nuxt3模块的简单介绍

    记录下nuxt3项目中module的用法 使用 modules/ 目录在应用程序中自动注册本地模块。 这是一个很好的地方,可以放置您在构建应用程序时开发的任何本地nuxt模块。 nuxt模块相当于npm包,可以发布到npm社区中 在modules/ 目录下的本地模块,会自动注册模块,无需在 nuxt.config.ts文件中

    2024年04月27日
    浏览(27)
  • 【Nuxt3】nuxt3目录文件详情描述:.nuxt、.output、assets、public、utils(一)

    nuxt3的中文网站 上次简单介绍了nuxt3创建项目的方法和目录文件大概用处。 这次详细说下.nuxt、.output、assets、public、utils五个文件夹的用处。 Nuxt在开发中使用.nuxt/目录来生成你的Vue应用程序。 为了避免将开发构建的输出推送到你的代码仓库中,你应该将这个目录添加到你的

    2024年01月18日
    浏览(73)
  • 【Nuxt】在 Nuxt3 中使用 Element Plus

    在 nuxt.config.ts 中配置 类似写 vue3 项目,可以导入组件,也可以直接使用组件 在 Nuxt 3 中集成 Element Plus 的步骤 20分钟带你入门Nuxt3

    2024年02月05日
    浏览(30)
  • Nuxt3如何新建项目

    1.新建一个文件目录 nuxt-app 2.命令行cd到目录下运行 npx nuxi init nuxt-test 回车运行下 nuxt-test是文件名自己随意 3.再cd nuxt-test到目录下 运行npm install 4.运行完成后 npm run dev 启动项目 显示以下页面 1.在app.vue根目录同级新建pages文件夹 再新建一个index页面(新建文件目录参考官方文档

    2024年02月13日
    浏览(34)
  • Nuxt3环境变量配置

    Nuxt3 正式发布还不到半年,在投入生产环境使用后,遇到了不少问题,很难找到合适的解决方案,其中环境变量配置就是其中一个,之前一直未能解决,最近要上持续集成,无法绕过这个问题,所以花了点时间研究了一下,最终找到了解决方案,记录一下。 面对一个新框架,

    2024年02月01日
    浏览(50)
  • nuxt3 如何监听路由变化?

    nuxt3 如何监听路由变化?

    2024年02月11日
    浏览(48)
  • 一文搞懂Nuxt3基本用法

    在前后端分离出现之前,传统的web页面都是服务端渲染的,如JSP、PHP、Python Django,还有各种模板技术Freemarker, velocity,thymeleaf、mustache等等。其实这套技术都挺成熟的,也用了很多年。 但前后端分离出现后,带来两个好处: 工程上的分工,让前端专门盯前端技术,开发效率上

    2024年02月05日
    浏览(37)
  • nuxt3使用记录一:框架摸索

    之前直接用的Vue3,后面为了seo,了解到Vue3用SSR渲染很复杂,甚至衍生了出nuxt3这个框架,这个框架在github已经有50K star了,也已经是个非常成熟的框架了,不过我感觉国内的资料也不多,看来国内接受新事物的速度依然很慢,大厂估计都自研了,小公司就用老方法PHP啥的。

    2024年04月10日
    浏览(35)
  • 宝塔部署Nuxt3项目(https)

    之前在服务器搭建的项目都是用http的,但是一般来说都要换成https;因为https比http更加安全,数据不再是明文传输,更不容易被攻击/被第三方广告光顾;所以就有了将http换成https的想法。 第一个需要升级的项目是我使用nuxt3重构的博客项目,期间遇到了诸多问题,所以想记录

    2024年02月04日
    浏览(41)
  • Nuxt3重点特性使用举例记录

    小聊: 基于vue.js,用于SSR渲染解决SEO,但不仅限于此。不用于局限的眼光去看它,使用它会比原生vue3更加流畅舒适,性能也更高。在熟悉vue3的基础上学习成不算高。另外,它完全支持vue3语法,相比于vue3,它改进了vue3的一些功能,Nuxt3有一些“约定”,你可以理解为是一些

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包