学习Web开发存疑:API对象与Express构建服务端的区别是什么?
客户端请求工具(fetch/axios)与Express服务端框架的核心区别
首先得明确:你学的fetch、axios是客户端用来发起HTTP请求的工具,而Express是用来搭建服务端、提供API接口的框架——两者属于Web请求链路的两端,各司其职,完全不是同一类东西。
1. 定位与作用天差地别
- fetch/axios:是运行在浏览器(或Node.js环境)里的工具,核心就是帮你给服务端发请求、拿数据。比如前端页面点个按钮要加载商品列表,你就用它们发GET请求到
/api/goods,拿到数据后渲染页面就行。 - Express:是Node.js的服务端框架,用来搭建能接收HTTP请求的服务。你可以用它定义接口路由(比如
GET /api/goods)、写业务逻辑(从数据库查商品数据)、最后把结果返回给客户端。没有它的话,你得手写Node.js底层HTTP模块的代码,繁琐到爆炸。
2. 运行环境完全不同
- fetch/axios:主要跑在浏览器客户端,也能在Node.js里用(比如写脚本爬数据),核心场景是前端和服务端的通信。
- Express:只能跑在Node.js环境,是服务端的基础设施,专门用来搭Web服务、API服务。
3. 核心能力差异明显
- fetch/axios:核心能力是发请求、处理响应——比如设置请求头、打包POST参数、自动解析JSON、用Promise处理异步逻辑(这也是为啥先学Promise,因为它们都是基于Promise实现的)。举个简单例子:
// 客户端用axios发请求 axios.get('/api/goods') .then(res => console.log('拿到的商品数据:', res.data)) .catch(err => console.error('请求失败:', err)) - Express:核心能力是接请求、处理逻辑、返回响应——比如定义路由、用中间件做日志/权限校验、连数据库、处理错误。举个对应接口的例子:
// 服务端用Express写接口 const express = require('express') const app = express() // 定义GET /api/goods接口 app.get('/api/goods', (req, res) => { // 这里可以写从数据库查数据的逻辑 const goodsList = [{id: 1, name: '手机'}, {id: 2, name: '电脑'}] res.json(goodsList) // 返回JSON数据给客户端 }) app.listen(3000, () => console.log('服务跑在3000端口啦'))
4. 协作关系很清晰
简单说就是:fetch/axios是“请求方”,Express是“响应方”——你用fetch/axios给Express搭的服务端接口发请求,Express处理完把数据回传给客户端,客户端再用拿到的数据做页面渲染等操作。
内容的提问来源于stack exchange,提问作者kandy
相关产品推荐
相关产品推荐

