什么是API_如何使用javascript发起网络请求【教程】
发布时间 - 2026-01-26 00:00:00 点击率:次API是约定的通信规则;JavaScript用fetch或XMLHttpRequest调用Web API;fetch更现代简洁,需手动处理cookie、JSON解析、HTTP错误及URL参数,POST传JSON须设Content-Type并序列化body。
API 不是某种工具或代码,它是一套约定好的通信规则——就像餐厅的菜单,你点菜(发请求),厨房按标准流程做(服务器处理),再把成品端给你(返回数据)。JavaScript 本身不“有” API,但它能通过 fetch 或 XMLHttpRequest 调用 Web API 发起网络请求。
什么时候该用 fetch 而不是 XMLHttpRequest
fet 是现代浏览器的标准方案,语法简洁、基于 Promise,适合绝大多数场景;
XMLHttpRequest 主要用于需要精细控制上传进度、取消请求或兼容 IE10/11 的老项目。
-
fetch默认不带 cookie,需显式加credentials: 'include'才能携带登录态 -
fetch返回的Response对象不是 JSON,必须调用.json()(或.text())才能读取内容,否则只是个流对象 -
fetch只在网络错误(如断网、DNS 失败)时 reject,HTTP 状态码 404、500 不会触发 catch,得手动检查response.ok
fetch 发 GET 请求的典型写法和常见坑
最简 GET 示例:
fetch('/api/users')
.then(res => {
if (!res.ok) throw new Error(`HTTP ${res.status}`);
return res.json();
})
.then(data => console.log(data))
.catch(err => console.error('请求失败:', err));
- URL 中的查询参数必须手动拼接或用
URLSearchParams构造,fetch不自动处理对象参数 - 中文或特殊字符要先
encodeURIComponent,否则可能被截断或报 400 - 如果后端返回的是纯文本(比如 CSV)、XML 或 Blob,别硬调
.json(),会抛错
POST 提交 JSON 数据时必设的两个头
发送 JSON 必须同时满足:
fetch('/api/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ email: 'a@b.c', password: '123' })
-
'Content-Type': 'application/json'告诉后端“我传的是 JSON”,否则后端可能解析为空对象 -
body必须是字符串,JSON.stringify()不可省略;直接传对象会变成[object Object] - 如果后端要求 form-data,就别用
JSON.stringify,改用FormData实例,且不要设Content-Type(浏览器会自动生成带 boundary 的头)
真正容易出问题的,往往不是语法,而是对状态码、响应体类型、跨域限制、cookie 携带逻辑这些隐性契约的理解偏差。多看一眼 res.headers.get('content-type') 和 res.status,比反复重试更省时间。
# javascript
# word
# java
# js
# json
# cookie
# 浏览器
# app
# 工具
# 后端
# csv
# ai
# dns
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
利用 Google AI 进行 YouTube 视频 SEO 描述优化
教学论文网站制作软件有哪些,写论文用什么软件
?
七夕网站制作视频,七夕大促活动怎么报名?
Laravel观察者模式如何使用_Laravel Model Observer配置
Laravel如何实现用户注册和登录?(Auth脚手架指南)
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
JS实现鼠标移上去显示图片或微信二维码
北京网站制作公司哪家好一点,北京租房网站有哪些?
原生JS获取元素集合的子元素宽度实例
Laravel模型事件有哪些_Laravel Model Event生命周期详解
简单实现jsp分页
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
如何利用DOS批处理实现定时关机操作详解
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
如何快速搭建高效简练网站?
如何在万网利用已有域名快速建站?
如何在Windows虚拟主机上快速搭建网站?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
香港服务器租用费用高吗?如何避免常见误区?
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
如何彻底卸载建站之星软件?
Laravel如何与Inertia.js和Vue/React构建现代单页应用
Linux安全能力提升路径_长期防护思维说明【指导】
Laravel如何实现一对一模型关联?(Eloquent示例)
Laravel怎么实现验证码(Captcha)功能
深入理解Android中的xmlns:tools属性
如何自定义建站之星网站的导航菜单样式?
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
如何批量查询域名的建站时间记录?
如何在Windows 2008云服务器安全搭建网站?
如何在阿里云虚拟主机上快速搭建个人网站?
BootStrap整体框架之基础布局组件
魔方云NAT建站如何实现端口转发?
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
Bootstrap整体框架之JavaScript插件架构
无锡营销型网站制作公司,无锡网选车牌流程?
javascript中闭包概念与用法深入理解
Laravel Fortify是什么,和Jetstream有什么关系
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集

