vue3 axios统一添加headers和单独接口添加headers

本文详细介绍了在Vue3中使用Axios如何统一添加以及针对特定接口添加headers,包括GET和POST请求的处理方式。通过拦截器在全局设置headers,并展示了在GET和POST请求中添加headers的示例代码。

vue3 axios统一添加headers和单独接口添加headers

vue3 axios统一添加headers 和单独某一个接口添加headers的语法是不一样的,其中接口添加headers需要区分请求方式是GET还是POST,下面依次介绍3种情况

第一种:统一添加headers 以token为例
在main.ts 里引入axios

import axios from 'axios'
axios.interceptors.request.use(config => {
    // 为请求头添加x-access-token字段为服务端返回的token
    config.headers['x-access-token'] = sessionStorage.getItem('token')
    // return config是固定用法 必须有返回值
    return config
})

第二种: 某一个接口添加headers,请求的方式为GET

axios.get(interfaceUrl, {
		params:{}, //如果没有传参,直接注释掉此行代码
        headers : {
            'x-access-token': sessionStorage.getItem('token')
        }
      }).then((res) => {
         
      })

第三种: 某一个接口添加headers,请求的方式为POST

 axios.post(interfaceUrl,
	 {}, //传参,直接写入参就可以, 注意:如果没有传参也必须写{}
 	 {
          headers : {
              'x-access-token': sessionStorage.getItem('token')
          }
      }).then((res) => {
        
      })
### 实现 Vue3 调用 Swagger API 为了在 Vue3 项目中调用由 Swagger 定义的 API 并获取数据,可以采用多种方法来简化这一过程并提高开发效率。以下是具体的方法: #### 方法一:使用 `yo swagger-2-ts` 自动生成 TypeScript 接口文件 通过命令行工具自动生成基于 Swagger 文档的 TypeScript 接口文件能够极大地减少手动编写代码的工作量,并确保前端与后端之间的契约一致性。 ```bash yo swagger-2-ts --swaggerUrl=http://localhost:8080/swagger-ui.html --className=API --type=typescript --outputFile=api.ts ``` 这段命令会根据指定 URL 的 Swagger JSON 文件生成对应的 TypeScript 类型定义服务客户端[^1]。 #### 方法二:利用脚本动态创建 API 请求模块 另一种方式是在构建过程中读取 Swagger JSON 数据源,然后将其转换成适合 Vue 应用使用的 JavaScript 或者 TypeScript 模块。这通常涉及到遍历所有的路径操作对象,再将它们映射到 Axios 请求函数上。 ```javascript const fs = require('fs'); // 假设已经解析好了Swagger文档的数据结构 function generateApiFiles(swaggerData, srcFolder) { Object.keys(swaggerData.paths).forEach(path => { const methods = swaggerData.paths[path]; Object.keys(methods).forEach(httpMethod => { let tagName = methods[httpMethod].tags ? methods[httpMethod].tags.join('_') : ''; let jsString = ` export function ${tagName}() { return axios.${httpMethod.toLowerCase()}('${path}'); } `; fs.writeFileSync(getPath(`${srcFolder}/api/${tagName}.js`), jsString); }); }); } ``` 这种方法允许开发者更灵活地控制输出的内容格式以及如何处理不同类型的 HTTP 请求[^2]。 #### 配置 Axios 默认参数 无论选择哪种方案,在实际发起网络请求之前都需要先设置好 Axios 的全局默认选项,比如超时时间、内容类型头信息等,以便更好地适配目标服务器的要求。 ```javascript import axios from 'axios'; axios.defaults.timeout = 5000; axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'; axios.defaults.baseURL = process.env.VUE_APP_API_BASE_URL || "http://default-backend-url"; ``` 上述配置使得所有来自该实例发出的请求都会携带这些预设好的属性值,从而减少了重复劳动并且提高了可维护性[^3]。 #### 结合以上步骤完成整个流程 综上所述,可以在 Vue3 项目的根目录下执行第一步提到的 Yeoman Generator 来快速搭建起一套完整的 RESTful API 访问层;接着按照第二步介绍的方式定制化调整某些特定需求下的行为模式;最后不要忘记第三部分所强调的基础准备工作——即合理设定 Axios 的初始化状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值