大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
后端入门概览
这一课你将能做到
- 画出并讲清楚「浏览器发起请求 → 后端处理 → 返回响应」的完整链路
- 用 Node.js 写出第一个可运行的 HTTP 服务,并用 curl 观察原始的请求与响应
- 列出后端工程师的技能地图,并说出每一项「解决什么问题」
为什么要学
你如果直接翻开教程学「Spring Boot 三天入门」,很容易陷入细节:注解是什么、依赖是什么、为什么报 404。缺的不是教程,而是一张地图——知道后端到底在干什么、每一项技术在整条链路里站在哪个位置。
人话:前端负责「用户看到什么」,后端负责「数据从哪来、存到哪去、谁有权操作」。你在购物 App 点「提交订单」,前端只是画了个按钮和弹窗,真正校验库存、扣款、写订单记录的,全是后端。学后端,就是学「怎么可靠地把一件事在服务器上办成」。
本课和后续 11 课对应 /roadmaps/backend-beginner 路线图的节点,学完可以逐个打钩。
先建立图像
一次典型的 Web 请求长这样:
┌──────────┐ ① 请求(Request) ┌──────────────┐ ③ 查/写数据库 ┌────────────┐
│ 浏览器 │ ──────────────────▶ │ 后端服务 │ ◀──────────────▶ │ 数据库/缓存 │
│ (前端) │ ◀────────────────── │ (你的程序) │ └────────────┘
└──────────┘ ② 响应(Response) └──────────────┘
发出 JSON 请求,拿到 JSON 响应 校验、计算、组装数据
后端的日常就是三件事:接住请求(校验参数)→ 处理逻辑(查缓存/查库/计算)→ 返回响应(拼 JSON)。所有框架——Express、Spring Boot、Gin、FastAPI——本质上都是帮你把这三步写得更省力。
跟着做
步骤 1:用 curl 看一次真实的 HTTP 请求
curl 是后端最常用的命令行工具,Windows 10+ / macOS 自带。打开终端输入:
curl -v https://httpbin.org/get
-v 表示显示完整过程,你会看到类似输出:
> GET /get HTTP/1.1 ← 请求行:方法 + 路径 + 协议版本
> Host: httpbin.org ← 以下是请求头
> User-Agent: curl/8.4.0
> Accept: */*
>
< HTTP/1.1 200 OK ← 响应行:状态码
< Content-Type: application/json
<
{ "args": {}, "headers": { ... }, "url": "https://httpbin.org/get" } ← 响应体
先认识三个概念:请求方法(GET/POST 等)、状态码(200 成功、404 找不到、500 服务器出错)、响应体(真正的数据,通常是 JSON)。
步骤 2:写第一个 HTTP 服务
新建文件夹 bebg-intro,进入后新建 server.js(Node.js 18+ 自带一切依赖,不需要 npm install):
// server.js —— 无需安装任何依赖
const http = require('http');
const server = http.createServer((req, res) => {
console.log('收到请求:', req.method, req.url);
console.log('请求头 User-Agent:', req.headers['user-agent']);
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
res.end(JSON.stringify({ message: '你好,这是后端返回的数据', time: new Date().toISOString() }));
});
server.listen(3000, () => {
console.log('服务已启动: http://localhost:3000');
});
运行:
node server.js
另开一个终端窗口:
curl http://localhost:3000
# {"message":"你好,这是后端返回的数据","time":"2026-01-01T08:00:00.000Z"}
回到第一个终端,你会看到服务打印出了收到的请求。你已经拥有一个后端服务了——虽然只有 10 行,但「监听端口、接收请求、返回响应」的骨架和淘宝的后端没有区别。
步骤 3:用浏览器 DevTools 观察前后端交互
打开任意主流网站,按 F12 → Network 面板 → 刷新页面:
- 列表里每一行就是一个 HTTP 请求
- 点开一个 XHR/Fetch 类型的请求,看 Headers(请求头、响应头)和 Response(响应体 JSON)
- 观察「Initiator」列:是页面里的哪段 JS 发起了这个请求
你会直观看到:前端通过大量 API 请求从后端拿数据,再渲染成页面。这就是「前后端分离」。
步骤 4:画出你的技能地图
对照下面这张表,在纸上给自己标出「学过 / 听过 / 没听过」。这张地图就是本课程 12 课的顺序:
| 层次 | 技术 | 解决什么问题 | 对应课程 |
|---|---|---|---|
| 协作 | Git / GitHub | 多人协作、版本回滚 | 第 2 课 |
| 语言 | Java / Go / Python / Node | 后端的编程语言 | 第 3 课 |
| 存储 | PostgreSQL / MySQL | 数据持久化 | 第 4-5 课 |
| 缓存 | Redis | 加速读请求、削峰 | 第 6 课 |
| 接口 | REST API | 前后端通信契约 | 第 7 课 |
| 安全 | 认证与授权 | 「你是谁、你能干什么」 | 第 8 课 |
| 效率 | ORM | 用对象操作代替手写 SQL | 第 9 课 |
| 质量 | 单元/集成测试 | 保证代码改了不出事 | 第 10-11 课 |
| 综合 | 完整小项目 | 把上面所有东西串起来 | 第 12 课 |
讲清楚要点
- HTTP 是无状态的请求-响应模型:每个请求独立,服务器默认不记得上一个请求是谁发的。所以后续需要 Cookie/Session/Token 来「记住」用户——这是第 8 课的主题。
- 前后端的契约是 API:前端不关心后端用什么语言,只关心「我发什么、你回什么」。JSON 是目前最通用的数据格式,本质就是带键值的文本。
- 后端的核心职责:参数校验、业务逻辑、数据存取、权限控制、性能与安全。逻辑放在后端而不是前端,因为前端代码在用户手里,可以被篡改——价格、权限校验绝不能只靠前端。
- 「服务器」就是一台跑着你程序的电脑:
localhost:3000中的 3000 是端口号,一台电脑可以用不同端口同时跑多个服务。 - 框架解决的是重复劳动:步骤 2 手写的 http 模块能干活,但路由、解析 JSON、错误处理都要自己造轮子。框架(Express/Spring Boot)就是造好轮子的集合,第 7 课开始会大量使用。
你可能会懵的地方
-
API 到底是什么? Application Programming Interface,程序之间约定的「调用方式」。在 Web 后端语境下,通常指「一个 URL + 请求方法 + 入参 + 出参」的组合。
GET /api/notes拿列表、POST /api/notes创建一条,这就是两个 API。 -
前端和全栈的边界在哪?我该先学哪边? 边界就是「谁对数据负责」。前端管展示与交互,后端管数据与逻辑。如果目标是理解整个系统、写业务服务,先学后端;后端思维(接口设计、数据建模)迁到前端很容易,反过来难一些。
-
为什么要有状态码,不能全都返回 200 加个字段吗? 状态码是给「机器和人」快速判断用的通用语义。网关、监控、重试逻辑都依赖它。全 200 的接口会让排错和自动化治理变得混乱,第 7 课会展开。
-
一个后端要学这么多东西,学到什么时候? 地图是「全貌」不是「任务清单」。入门只需:一门语言 + 一个框架 + SQL 基础 + Git + 会写几个带认证的 CRUD 接口。其他按项目需要再深入,本课程就按这个最小闭环设计。
-
Node.js 算后端吗?它和 Java 后端差在哪? 算。语言只是工具,HTTP/SQL/认证/缓存这些概念完全通用,换语言只是换语法和生态。第 3 课专门讲怎么选。
错法对照
| 错法 | 问题 | 正解 |
|---|---|---|
| 把业务校验全写在前端 | 用户绕过前端直接调接口就失效 | 后端校验为准,前端校验只做体验 |
| 收藏 20 个教程轮流看 | 没有地图,永远在入门 | 按技能地图逐层打通,先跑通最小闭环 |
| 一上来就学分布式/微服务 | 基础未稳,全是空中楼阁 | 先把单机 CRUD + 认证 + 测试写扎实 |
| curl 输出看不懂就跳过 | HTTP 语义是后端地基 | 逐行读懂请求行/响应行/状态码 |
认为 localhost 不算真后端 | 本地开发环境就是后端开发的主战场 | 本地跑通 = 具备了部署到服务器的同一套能力 |
卡点急救
node命令找不到:去 nodejs.org 装 LTS 版本,装完重开终端,node -v能输出版本号即可。- PowerShell 里 curl 行为奇怪:Windows PowerShell 的
curl是Invoke-WebRequest的别名。用curl.exe显式调用真正的 curl,或改用 Git Bash。 - 端口被占用(Error: listen EADDRINUSE):说明 3000 端口已有程序。改代码里的
server.listen(3001, ...),或结束占用进程:npx kill-port 3000。 - curl 返回乱码:响应头里要带
charset=utf-8(步骤 2 的代码已包含),Windows 终端可先执行chcp 65001切换 UTF-8。
面试常问
-
从输入 URL 到页面展示,发生了什么? 主线:DNS 解析 → TCP 握手(HTTPS 再加 TLS)→ 发送 HTTP 请求 → 服务器处理(后端查缓存/数据库、组装数据)→ 返回响应 → 浏览器解析 HTML/CSS/JS 渲染 → 页面 JS 再发 API 请求拿数据。面试官想听到你把「后端处理」这一段讲细:负载均衡、鉴权、业务逻辑、读写数据库、返回 JSON。
-
前后端分离和模板渲染(如 JSP、服务端渲染)有什么区别? 模板渲染:后端把 HTML 拼好直接给浏览器,前端逻辑弱;前后端分离:后端只返回 JSON,前端框架负责渲染。分离后前后端可并行开发、各自部署,靠 API 文档协作。
-
为什么说「不要信任客户端输入」? 前端代码和数据都在用户设备上,可被随意篡改(抓包工具改请求是基本功)。金额、权限、库存等一切关键校验必须在后端重做。
自测三问
- 一次 HTTP 请求-响应包含哪几个部分?状态码 200、404、500 分别代表什么?
- 把你在步骤 2 写的服务改成:访问
/hello返回{"message":"hello"},访问其他路径返回 404。(提示:判断req.url) - 对照技能地图,说出后面 11 课每课解决什么问题。
小结一句话
后端 = 接住请求、处理逻辑、存取数据、返回响应;技能地图九层楼,本课程带你从地基(Git、语言)一路盖到天台(完整项目)。
延伸
- MDN:HTTP 概述
- httpbin.org——随时用来观察请求细节的免费服务
- 下一课:Git 与托管——没有版本控制,后面的代码写多少丢多少。