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,
  };
});
相关推荐
小蒜学长6 分钟前
基于SpingBoot+Vue的定向越野赛事管理系统的设计与开发(代码+数据库+LW)
java·前端·spring boot·后端·前后端分离·定向越野赛事
nyaomaru7 分钟前
is-kit 达成 100 Stars ⭐🎉 从 50 到 100,发生了什么?
前端·typescript
陈随易29 分钟前
副业搞钱点子之 Umami 统计如何赚钱
前端·后端·程序员
美狐美颜sdk1 小时前
直播APP开发中的视频帧处理:美颜SDK接入需要注意哪些细节?
大数据·前端·人工智能·音视频·美颜sdk
随风一样自由1 小时前
【React+TS71007】Next.js “use client” 误用导致 TS71007:客户端/服务端引入问题的完整排查与修复
前端·javascript·react.js
计算机魔术师2 小时前
1.4万亿没人接,OpenAI自己把价砍了1500亿
前端
非凡ghost2 小时前
Photo Supreme:专业高效的照片收藏管理专家
服务器·前端·人工智能·电脑·软件需求
zhangminghuan2 小时前
前端动态路由实现方案(Vue3 + VueRouter4)|后台权限路由实战
前端
一切皆是因缘际会2 小时前
大模型应用
前端·人工智能
SCandL1522 小时前
【无标题】
前端