NUXT3.0实现网络请求二次封装
最近在开发基于nuxt3.0的项目,看了官网的网络请求,感觉不太适合,就自己基于官网的useFetch()方法封装了一个网络请求,下面开始实现封装。
第一步:新建http.ts文件,用于编写封装代码
我选择在composables目录中新建http.ts。composables是官方默认的插件目录,官方描述: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 ?? "",
body: obj?.body ?? "",
onRequest({ request, options }) {
// 设置请求报头
options.headers = options.headers || {}
/**如果接口需求携带token请求,则可先自行使用官方的useCookie()方法设置Cookie存储后,再使用useCookie()方法,取出token使用。如下例子:*/
//const token = useCookie('token')
//@ts-ignore
//options.headers.Authorization = token.value
},
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项目中使用ts的小伙伴一个小提示,注意整个项目中不要使用中文路径哦~记住是完整项目路径都不要有中文!否则会报错!
NUXT3.0实现网络请求二次封装的更多相关文章
- Swift3.0 Alamofire网络请求的封装(get,post,upload图片上传)转
转自: http://blog.csdn.net/C_calary/article/details/53193747 学习Swift 试着动手写个天气小app,搜集资料这个封装还蛮好用的. 我用的第三 ...
- iOS开发--Swift 基于AFNetworking 3.0的网络请求封装
Swift和OC基于AFNetworking的网络请求流程相同, 就是语法不同, 对于Swift语法不是很清楚的同学, 建议多看看API文档, 自己多多尝试. 写过OC的应该都明白每句话做什么的, 就 ...
- swift4.0 对 afn 进行二次封装
先将 afn 用pod导入到 工程中 创建一个类 ZHttpTools 继承自 AFHTTPSessionManager 一般我们不希望网络请求同时有多个存在,所以我们将这个工具类 设计成单例 代 ...
- Vue项目的网络请求代理到封装详细步骤
1.创建vue项目 vue create demo demo是项目名称 2.安装axios 进入demo里面打开终端(黑窗口),执行 npm install axios 3.进行config.js配置 ...
- axios 请求二次封装
/** * 封装get方法 * @param url * @param data * @returns {Promise} */ export function get(url, params) { ...
- 网络请求之jsonp封装
首先介绍下jsonp原理 浏览器因为同源策略的限制,在不同源的服务器通过我们传统axios是不能直接用来请求数据的(忽略代理),而src标签则不受同源策略的影响,所以我们需要动态的创建带有src的标签 ...
- swift3.0 原生网络请求
func loadData() { let urlString = baseURL + NewsListURL + "\(self.page)"+"/20" ...
- andriod开发,简单的封装网络请求并监听返回.
一.为什么封装 因为android 4.0 以后的发送网络请求必须要放到异步线程中,而异步线程必须跟handle合作才能更新主线程中的UI,所以建议用一个类继承handler来异步处理网络请求. 二. ...
- Android项目开发全程(三)-- 项目的前期搭建、网络请求封装是怎样实现的
在前两篇博文中已经做了铺垫,下面咱们就可以用前面介绍过的内容开始做一个小项目了(项目中会用到Afinal框架,不会用Afinal的童鞋可以先看一下上一篇博文),正所谓麻雀虽小,五脏俱全,这在里我会尽量 ...
- iOS 自己封装的网络请求,json解析的类
基本上所有的APP都会涉及网络这块,不管是用AFNetWorking还是自己写的http请求,整个网络框架的搭建很重要. 楼主封装的网络请求类,包括自己写的http请求和AFNetWorking的请求 ...
随机推荐
- Cross Site Scripting DOM (XSS) 攻击jQuery append() 的处理方法
做安全红线使用Fortify工具进行扫描时,jquery append会报Cross Site Scripting DOM风险.解决该问题有两种办法. 一.原生dom方式 使用JavaScript原生 ...
- mysql中数据库的并发事务问题
1.脏读(dirty-read):如果第二个事务查询到第一个事务还未提交的更新数据,就会形成脏读. 2.幻读/虚读(phantom read):一个事务执行两次,如果出现第二次事务执行比第一次多一些或 ...
- AppScan的安装及破解1
(一)AppScan的安装及破解 IBM AppScan是一款目前最好用的Web 应用安全测试工具,Rational AppScan 可自动化 Web 应用的安全漏洞评估工作,能扫描和检测所有常见 ...
- 9. 实现包括前端后台的预约洗狗功能 - 使用Power App处理预约信息 - 创建Power Canvas App并实现基础功能
Power Canvas App可以通过画布设计和构建业务应用,无需通过传统编写代码的形式来构建,通过将元素拖动到画布上来设计我们的Power Canvas APP,可以与Miceosoft和第三 ...
- 学习笔记-C++
题目:声明一个基类BaseClass,从它派生出类DerivedClass,BaseClass有成员函数fn1()和fn2(),fn1()是虚函数,DerivedClass也有成员函数fn1()和fn ...
- DVWA-XSS (Reflected) 反射性 XSS
反射性XSS,是非持久性,也是最常见的XSS,通过解析传入前段页面,常见为交互式输入框 LOW 审计源码 <?php // 发送请求头 header ("X-XSS-Protectio ...
- JavaWeb笔记第一弹
一.MYSQL的安装 1.MYSQL的安装 可以去官网找到与自身计算机向对应的版本进行下载 网址如下: MySQL :: Download MySQL Community Server 2.MYSQL ...
- 关于jsp页面中的小细节们
细节一:利用jsp判断文本框的输入格式是否正确 也就是主要利用script标签进行判断,主要用到的是正则表达式(判断是否为整数): 再加上if语句的配合,就能够在文本框的格式不正确时,发出错误警告啦! ...
- 干货来袭!3天0基础Python实战项目快速学会人工智能必学数学基础全套(含源码)(第3天)概率分析篇:条件概率、全概率与贝叶斯公式
第1天:线性代数篇:矩阵.向量.实战编程 第2天:微积分篇:极限与导数.梯度下降.积分.实战编程 第3天:概率分析篇:条件概率与全概率.贝叶斯公式.实战项目 目录 前言 一.概率与机器学习 1.1 概 ...
- python爬取猫眼电影Top100榜单的信息
爬取并写入MySQL中 import pymysql import requests from bs4 import BeautifulSoup headers = { 'User-Agent': ' ...