当前位置: 首页 > news >正文

post、get、delete、put请求

一、配置axios拦截器

// src/utils/request.js
import axios from 'axios';// 创建 axios 实例
const instance = axios.create({baseURL: 'https://api.example.com', // 你的 API 基础 URL//timeout: 10000, // 请求超时时间
});// 请求拦截器
instance.interceptors.request.use((config) => {// 在发送请求之前做些什么// 例如,添加 token 到请求头const token = localStorage.getItem('token');if (token) {config.headers.Authorization = `Bearer ${token}`;}// 有token就更新token,没有就不干嘛return config;},(error) => {// 对请求错误做些什么return Promise.reject(error);}
);// 响应拦截器
instance.interceptors.response.use((response) => {// 对响应数据做些什么if(response.data.code === 0){return response.data;}alert(response.data.message ? response.data.message : "操作失败")return response.data;},(error) => {// 对响应错误做些什么if (error.response) {switch (error.response.status) {case 401:// 处理未授权的情况break;case 404:// 处理未找到资源的情况break;// 其他状态码处理default:break;}}return Promise.reject(error);}
);export default instance;

为什么是返回result.data而不是result?

在Axios中,result对象包含了整个响应,包括datastatusstatusTextheadersconfig。在拦截器中返回result.data,是因为后端服务通常会将数据放在响应对象的 data 字段中。

二、封装请求API

import request from '@/utils/request.js'// 封装 GET 请求
export const getData = (params) => {return request.get('/endpoint', { params });
};// 封装 POST 请求
export const postData = (data) => {return request.post('/endpoint', data);
};// 封装 PUT 请求
export const updateData = (id, data) => {return request.put(`/endpoint/${id}`, data);
};// 封装 DELETE 请求
export const deleteData = (id) => {return request.delete(`/endpoint/${id}`);
};

使用api方法时,要导入方法 

import { userRegisterService, userLoginService } from '@/api/user.js';

三、axios发送请求时两种携带参数的方式

须知:post、put可以携带请求体,而delete和get不携带请求体,这四种请求都可以携带url参数

1、参数携带到请求体里

axios.post('/api/resource', {key: 'value',anotherKey: 'anotherValue'
})// 或者传递对象参数
const registerData = {username: '123',password: '1234',repassword: '1234'
}axios.post('/api/reg', registerData);

2、参数携带到URL里

axios.get('/api/resource', {params: {key1: 'value1',key2: 'value2'}
})

或者 

const data = {key1: 'value1',key2: 'value2'
}axios.post('/api/resource', {params: data
})

http://www.mrgr.cn/news/90652.html

相关文章:

  • 力扣LeetCode: 1742 盒子中小球的最大数量
  • 第十篇:电源设计的“能量矩阵”——无线充电与碳化硅LLC谐振
  • Unity中自定义协程的简单实现
  • 云计算如何推动数字化转型?
  • DeepSeek系统崩溃 | 极验服务如何为爆火应用筑起安全防线?
  • C++ 中的 Const 关键字(1)
  • 如何部署Deepseek-R1:从零开始的完整指南
  • fps武器系统3:发射子弹命中反馈
  • CTF-web:java-h2 堆叠注入rce -- N1ctf Junior EasyDB
  • java八股---java02(面向对象、类、变量、方法、值传递)
  • Jenkins 新建配置Pipeline任务 三
  • 【前端】 react项目使用bootstrap、useRef和useState之间的区别和应用
  • 【AI大模型】Ollama部署本地大模型DeepSeek-R1,交互界面Open-WebUI,RagFlow构建私有知识库
  • 企业级高可用 Kubernetes 实践:基于青云 LB 搭建容灾与负载均衡集群全攻略
  • 伯克利 CS61A 课堂笔记 08 —— Strings and Dictionaries
  • RocketMQ和Kafka如何实现顺序写入和顺序消费?
  • 细说STM32F407单片机RTC入侵检测和时间戳的原理及使用方法
  • 每日一题-斐波那契数列和跳台阶
  • 伯克利 CS61A 课堂笔记 09 —— Data Abstraction
  • mapbox 从入门到精通 - 目录
  • LeapMotion第2代 Unity示范代码(桌面开发)
  • Java IO流详解
  • 二次封装axios解决异步通信痛点
  • #渗透测试#批量漏洞挖掘#致远互联AnalyticsCloud 分析云 任意文件读取
  • 【一文读懂】HTTP与Websocket协议
  • 【07】trait特性