导言
在开始构建 REST API 之前,你需要一个可以正常工作的项目基础。本课将逐步带你完成所有步骤:初始化 Node.js 项目、安装 Express、编写一个最小化的服务器,并确认它确实可以运行。学完本课后,你将拥有一个能够响应 HTTP 请求的运行中的服务器——这是后续所有课程的基础。
本课程假定你的机器上已经安装了 Node.js(v18 或更高版本)和 npm。继续之前,请运行以下两条命令进行验证:
如果其中任何一条命令报错,请前往 nodejs.org 下载 Node.js(npm 已捆绑在其中)。
初始化项目
为你的项目新建一个目录,并将其初始化为一个 Node.js 包。init 命令会生成一个 package.json 文件,用于追踪项目的元数据和依赖项。
-y 标志会接受所有默认值,这样就不会逐个提示你输入项目名称、版本等信息。你可以随时手动编辑 package.json。此时,你的目录中只有这一个文件——还没有任何代码。
接下来,安装 Express:
这条命令会将 Express 及其依赖下载到 node_modules 文件夹中,并将该依赖记录在 package.json 的 "dependencies" 字段下。你还会看到一个新生成的 package-lock.json 文件——它用于锁定确切的依赖版本,从而确保团队中每位开发者安装的都是完全一致的依赖包。
构建第一个服务器
在项目根目录下创建一个名为 server.js 的文件。这个文件就是你应用的入口点。
逐步讲解每个部分:require('express') 用于引入这个框架。调用 express() 会创建一个应用实例,并将其存储在 app 中。app.get() 用于注册一个路由处理函数——第一个参数是 URL 路径,第二个参数是一个回调函数,它接收请求对象(req)和响应对象(res)。res.json() 用于发送 JSON 响应,并自动设置 Content-Type 响应头。最后,app.listen() 将服务器绑定到一个端口,并开始接受连接。
启动服务器:
你应当可以在控制台看到这条输出消息。打开浏览器访问 http://localhost:3000,或使用 curl:
预期输出:
优化开发工作流
每次修改代码后都手动重启服务器非常繁琐。将 nodemon 作为开发依赖安装——它会监听你的文件,并在检测到更改时自动重启。
然后在 package.json 中添加一个 dev 脚本:
现在以开发模式运行服务器:
编辑 server.js 并保存后,nodemon 会自动重启进程,无需你手动操作。start 脚本保留用于生产环境,在生产环境中 nodemon 并不适用。
还有一项改进:解析传入的 JSON 请求体。Express 默认并不会做这件事。请在你的路由之前添加这一行中间件:
如果不添加,当客户端发送带有 JSON payload 的 POST 请求时,req.body 将是 undefined。现在加上它,可以在后续避免调试时的困惑。
小结
现在你已经拥有一个功能完备的 Express 项目:一个用于追踪依赖的 package.json、已安装的 Express、一个监听 3000 端口的 server.js、一个可正常工作的 GET 路由、用于快速迭代的 nodemon,以及已启用的 JSON 请求体解析。这正是后续课程中讲解每一种 REST API 模式时所使用的起点骨架。下一节课将进入路由部分——随着 API 的增长,定义多个端点并将其组织得清晰有序。