新闻中心

如何用j*ascript发起HTTP请求_fetch API怎么用?

2025-12-15
浏览次数:
返回列表
最推荐用 fetch API 发起 HTTP 请求,它原生支持、基于 Promise、语法简洁;需手动检查 response.ok 处理 404/500 等状态码,POST 要设 headers 和 JSON.stringify body,超时需 AbortController 实现。

如何用javascript发起http请求_fetch api怎么用?

用 J*aScript 发起 HTTP 请求,现在最推荐的方式就是 fetch API。它原生支持、语法简洁、基于 Promise,比老式的 XMLHttpRequest 更直观,也更容易配合 async/await 使用。

fetch 基本用法:GET 请求

最简单的场景是发一个 GET 请求获取数据:

  • 调用 fetch(url) 返回一个 Promise,成功时解析出 Response 对象
  • Response 对象需要再调用 .json().text().blob() 等方法读取响应体
  • 注意:fetch 不会因 HTTP 状态码(如 404、500)自动 reject,需手动检查 response.okresponse.status

示例:

Blackink AI纹身生成 Blackink AI纹身生成

创建类似纹身的设计,生成独特纹身

Blackink AI纹身生成 80 查看详情 Blackink AI纹身生成
async function getData() {
  try {
    const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    const data = await response.json();
    console.log(data);
  } catch (err) {
    console.error('请求失败:', err);
  }
}

发送 POST 请求并传 JSON 数据

提交表单或调用接口常需 POST。关键点是设置 headersbody

立即学习“J*a免费学习笔记(深入)”;

  • Content-Type: application/json 告诉后端你发的是 JSON
  • JSON.stringify() 把对象转成字符串再传入 body
  • method 字段必须显式写为 'POST'

示例:

async function createPost() {
  const postData = { title: '我的标题', body: '这是内容', userId: 1 };
  
  const response = await fetch('https://jsonplaceholder.typicode.com/posts', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(postData)
  });

  return response.json();
}

处理请求头、凭证和超时

实际项目中常需额外配置:

  • credentials: 'include' —— 携带 Cookie(跨域时后端也要允许)
  • headers 可加 Authorization、X-Requested-With 等自定义字段
  • fetch 本身不支持 timeout,但可用 AbortController 实现中断

带超时的示例:

async function fetchWithTimeout(url, timeout = 5000) {
  const controller = new AbortController();
  const id = setTimeout(() => controller.abort(), timeout);

  try {
    const response = await fetch(url, { signal: controller.signal });
    clearTimeout(id);
    return response;
  } catch (err) {
    clearTimeout(id);
    if (err.name === 'AbortError') {
      throw new Error('请求超时');
    }
    throw err;
  }
}

常见坑和注意事项

刚上手 fetch 容易忽略这些细节:

  • fetch 返回的 Promise 只在网络错误(如断网、DNS 失败)时 reject;4xx/5xx 状态码仍算 resolve
  • 没写 await response.json() 就直接打印 response,看到的是 Response 对象,不是数据
  • POST 时漏了 headers 或没 stringify body,后端可能收不到数据或报错
  • 跨域请求默认不带 Cookie,要加 credentials: 'include' 并确保后端响应头有 Access-Control-Allow-Credentials: true

基本上就这些。fetch 不复杂但容易忽略细节,配好错误处理和状态判断,日常开发足够用了。

以上就是如何用j*ascript发起HTTP请求_fetch API怎么用?的详细内容,更多请关注其它相关文章!


# 有哪些  # 网站列表页的优化  # 网站建设是什么职业的  # 内江品牌网站建设  # 网站关键词优化概念  # 推广驾校的网站有哪些  # 优化精英seo  # 廊坊市整合营销推广  # 品牌网站建设代运营  # 广德网站优化哪家专业  # 虚拟卡如何做营销推广呢  # 使用它  # 中文网  # 用了  # 相关文章  # 也要  # javascript  # 这是  # 的是  # 如何用  # r  # 状态码  # 跨域  # dns  # ai  # 后端  # access  # app  # cookie  # json  # js  # java 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: AO3网页版合集入口 Archive of Our Own同人作品浏览指南  C++如何使用AddressSanitizer(ASan)_C++调试工具中检测内存访问错误的利器  AO3最新入口2025公告_AO3中文官网合集  如何设置Windows Defender的定时扫描_计划任务实现自动杀毒【安全】  如何在网页中实现特定地点的随机图片展示  C++ vector二维数组定义_C++ vector of vector用法  Yandex浏览器官方网页版入口 Yandex浏览器最新版官网  J*aScript 字符串标签转换:使用正则表达式高效替换  qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程  如何使用Go和Martini动态服务解码后的图片  微信商城在哪里打开【步骤】  AI泡沫首次被“刺破”:GPU十年都无法存活!  Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】  Node.js CSV 数据处理:基于字段空值条件过滤整条记录的策略  星露谷物语官网入口 星露谷物语游戏官网入口  126邮箱手机版登录官网2026_126手机邮箱免费入口最新  中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】  必由学官网快捷入口 必由学网页版在线学习平台  c++20的std::jthread是什么_c++可中断线程与RAII式管理  在J*a中如何使用Stream.map转换元素_Stream映射操作解析  夸克浏览器网页版最新地址 夸克浏览器官方入口合集  Golang如何通过reflect操作map_Golang reflect map操作与遍历技巧  谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航  CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示  荒野行动PC版怎么注册_荒野行动PC版账号注册详细流程图文教程  Win10自动更新怎么关闭 Win10永久关闭系统更新的两种方法【终极版】  Angular响应式表单:实现提交后表单及按钮的禁用与只读化  妖精动漫免费平台 妖精动漫官网资源观看网址  Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全  小米14应用无法联网原因分析_小米14网络权限修复  Python getattr() 异常处理深度解析:避免程序意外退出  vivo云服务网页版登录 怎么登录vivo云服务网页版  C++如何连接MySQL数据库_C++使用Connector/C++操作MySQL数据库教程  J*aScript中管理异步API调用:确保操作顺序与数据一致性  12306选座怎么选到商务座_12306商务座选择与配置说明  小米Civi 4录制视频过暗_小米Civi 4亮度优化  win11 Snap Layouts怎么用 Win11窗口布局与分屏多任务高效指南【必学】  Python实时数据流中的动态最值查找策略  Pandas DataFrame 高效批量赋值:告别循环与笛卡尔积误区  如何更改在 Excel 中打开超链接时的默认浏览器  iCloud登录入口网页版 苹果iCloud官网登录  css链接悬停下划线样式如何自定义_使用::after结合content和transition  神经网络二分类模型训练异常:高损失与完美验证准确率的排查与修正  汽水音乐车机版8.9下载 汽水音乐车机版8.9版本安装入口  淘宝网网页版登录入口 淘宝官方网页版快捷登录  Win11怎么查看电脑配置_Win11硬件配置检测工具使用  python3时间如何用calendar输出?  腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程  taptap防沉迷怎么解除 taptap解除健康系统限制说明【2025最新】  c++中的std::launder有什么实际用途_c++对象生命周期与指针优化 

搜索