React和Next.js开发常见的HTTP请求方法

Fetch

get请求

优点:fetch是内置的,因此轻量,无需额外的安装

缺点:不具备缓存和错误状态的管理,需要手动解析响应

复制代码
fetch('url')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error))

对于post等其他请求,需要手动指定请求头和请求体内容类型

复制代码
//fetch
const url = 'https://api.example.com/postData'
const data = {
    key1: 'value1',
    key2: 'value2'
}
const options = {
    method: 'POST',
    body: JSON.stringify(data),
    headers: {
        'content-type': 'application/json'
    }
}
fetch(url, options).then(response => {
    if (!response.ok) {
        throw new Error('Network Response was not ok')
    }
    return response.json()
}).then(data => console.log(data))
    .catch(error => console.log('Error:', error))

Axios

优点:

  1. 更简洁的 API:axios 提供了简洁易用的 API,使得发送 HTTP 请求变得更加简单。
  2. 功能强大
    • 请求和响应拦截器:允许你在请求发送到服务器之前或响应返回客户端之前对其进行修改。
    • 取消请求:如果请求还未完成,你可以通过提供的取消令牌(CancelToken)来取消它。
    • 文件上传:axios 支持使用 FormData 对象来上传文件。
    • 客户端支持防止 CSRF:默认情况下,axios 将发送一个 X-XSRF-TOKEN 头,这有助于防止跨站请求伪造(CSRF)。
    • Promise 实现:基于 Promise 实现,使得异步编程更加直观和可维护。
    • 支持浏览器和 Node.js:可以在浏览器和 Node.js 环境中使用。

缺点:

  1. 需要手动管理状态:与某些前端框架(如 Vue.js 的 Vuex 或 React 的 Redux)集成的状态管理库不同,axios 本身并不管理请求的状态(如加载中、已完成、错误等)。这需要开发者自行实现,可能会增加代码的复杂性。
  2. 无法自动处理加载和错误状态:如上述所说,axios 不会为你自动处理加载和错误状态。你需要监听请求的 then 和 catch 方法,并在其中处理相应的逻辑。

不过,这些缺点并不是 axios 本身的问题,而是它作为一个专注于发送 HTTP 请求的库所设计的初衷。对于状态管理和错误处理,你可以结合其他库(如 Vuex、Redux、React Query 等)来实现更完整的功能。

总的来说,axios 是一个强大且灵活的 HTTP 客户端库,它为你提供了很多方便的功能,并且与各种前端框架和库都有良好的兼容性。

复制代码
npm install axios

get请求

复制代码
import axios from 'axios'
axios.get('https://api.example.com/data')
.then(response=>console.log(response.data))
.catch(error=>console.error(error))

post等其他请求,支持直接传递请求头和请求体,语法更简洁

复制代码
//fetch
import axios from 'axios'
const url = 'https://api.example.com/postData'
const data = {
    key1: 'value1',
    key2: 'value2'
}
const headers = {
    'Content-Type': 'application/json'
}
axios.post(url, data, headers)
    .then(response => console.log(response.data))
    .catch(error => console.error(error))

TanStack Query

React query-Vue Query

支持react,vue等框架

概览 | TanStack Query 中文文档

一款专门为处理数据获取和状态管理设计的库,具有错误处理,加载状态,缓存等功能

复制代码
npm i @tanstack/react-query

优点:全面状态管理:提供明确的加载、错误和成功状态;

更少代码,简洁的代码实现复杂的功能

得空搓了个文档库,一入计算机深似海,学不完啊...,还有好多要做...

相关推荐
瀚高PG实验室2 分钟前
nginx中配置数据库连接
运维·数据库·nginx·瀚高数据库
C++ 老炮儿的技术栈2 分钟前
两个线程对socket 进行读和写,需要加锁吗
java·服务器·网络
Mahut26 分钟前
从零构建神经影像可视化库:neuroviz 的架构设计与实现
前端·javascript·github
慧一居士31 分钟前
VueUse 功能介绍使用场景及完整使用示例
前端·vue.js
奇怪的猫31 分钟前
浏览器窗口最小化的时候,setInterval 执行变慢,解决方案
前端·javascript
多租户观察室31 分钟前
工作流新生态:2026年工作流与Coding的重新分工
前端·人工智能·后端·低代码
cmd33 分钟前
别再混淆了!JS类型转换底层:valueOf vs toString vs Symbol.toPrimitive 详解
前端·javascript
Carsene1 小时前
开源项目文档架构设计:Git Submodule 实现文档与代码的优雅分离
前端·后端
Z思学1 小时前
promise 有几种状态 async/await 和promise 有什么关系
前端
han_1 小时前
JavaScript设计模式(四):发布-订阅模式实现与应用
前端·javascript·设计模式