fetch

1️⃣ fetch 是什么?

fetch 是浏览器自带的一个方法,用来发 HTTP 请求

它的最大特点是:异步 (不会卡死页面)+ 基于 Promise (可以配合 await 很方便)。

2️⃣ 最简单的用法

假设我们有一个接口:

arduino 复制代码
https://api.example.com/data

我们想获取它的数据,最基础的写法:

js 复制代码
fetch("https://api.example.com/data")
  .then(res => res.json())
  .then(data => console.log(data))
  .catch(err => console.error("出错了", err));

3️⃣ 配合 async/await

await 会更直观:

js 复制代码
async function getData() {
  try {
    const res = await fetch("https://api.example.com/data");
    const data = await res.json();
    console.log(data);
  } catch (err) {
    console.error("出错了", err);
  }
}

📌 两次 await 的意义:

  1. 第一次 await 等的是"请求完成,拿到 HTTP 响应"(Response 对象)。
  2. 第二次 await 等的是"把响应体解析成 JSON"。

4️⃣ fetch 的几个重要点

(1)fetch 默认是 GET 请求

scss 复制代码
fetch("/api/user")

这就相当于:

sql 复制代码
fetch("/api/user", { method: "GET" })

(2)发送 POST 请求

css 复制代码
fetch("/api/user", {
  method: "POST",
  headers: {
    "Content-Type": "application/json" // 告诉服务器我发的是 JSON
  },
  body: JSON.stringify({ name: "张三", age: 18 }) // 请求体
})

(3)检查请求是否成功

fetch 不会因为 404 / 500 直接报错,它只会在网络错误 时(比如断网)才进 catch

所以要自己判断:

javascript 复制代码
const res = await fetch(url);
if (!res.ok) {
  throw new Error(`请求失败:${res.status}`);
}

res.ok 会在状态码 200~299 时返回 true

蓝桥杯真题

题目:www.lanqiao.cn/problems/18...

js 复制代码
export const useMessageStore = defineStore("message", () => {
  const messageState = ref([]);
  // 定义请求地址 MockUrl
  const MockUrl = "./data.json";
  let getUserMessage = async () => {
    // TODO:待补充代码
    try {
      const res = await fetch(MockUrl);
      if (!res.ok) {
        throw new Error(`请求失败:${res.status}`);
      }
      const data = await res.json();
      messageState.value = data;
      console.log("数据加载成功:", data);
    } catch (err) {
      console.error("获取数据出错:", err);
    }
    // TODO:END
  };

  return {
    messageState,
    getUserMessage,
  };
});
相关推荐
bugcome_com2 小时前
JWT 知识小课堂:从入门到精通,一文吃透 JSON Web Token
前端·json
To_OC2 小时前
写了三天 Next.js,我的 React 世界观被拆了又装回去
前端·全栈·next.js
独泪了无痕2 小时前
viewer.js 安装与配置指南:实现图片预览功能
前端·vue.js
Fluxart.ai5 小时前
电商商品图审核怎么自动化?规则引擎、人工复核与发布门禁
java·前端·自动化
why技术5 小时前
AI 写的文章,可能都带着手敲一遍都去不掉的“隐形水印”。
前端·人工智能·后端
愚公搬代码5 小时前
【愚公系列】《Android应用案例开发大全》016-LBS类应用掌上杭州(辅助工具类的开发)
android·前端
CodeSheep5 小时前
又一个华为天才少年,离职了!
前端·后端·程序员
kyriewen5 小时前
面试官说"打开你的AI工具"——我才发现,他考的根本不是写代码
前端·人工智能·面试
IT_陈寒7 小时前
Vue的双向绑定把我坑惨了,原来这个场景不能用
前端·人工智能·后端
hunterandroid7 小时前
[Android 从零到一] Compose LazyColumn 性能优化:key、稳定性与重组治理
android·前端