Menu
CoddyTech

配置

本课属于 Coddy Node.js 学习旅程的“REST API”单元。第 23 课,共 25 课。

在你的笔记本电脑上,服务器监听端口 3000。托管服务会用 node server.js 启动它,并自行选择端口,再通过环境变量传入 PORT。托管服务还会不时调用类似 GET /health 的路由,并在服务器停止响应时重启它。

// MAX_UPLOAD_MB=5 node server.js
const maxUpload = Number(process.env.MAX_UPLOAD_MB ?? 2);
const shopName = process.env.SHOP_NAME ?? 'My Shop';

process.env 中的每个值都是字符串,而 '5' + 1 的结果是 '51',因此要用 Number 转换数字。将设置放在一个文件 config.js 中读取,并在其他所有地方导入这些设置,这样其他地方就不会接触 process.env。

challenge icon

挑战

简单

在托管服务上,主机会选择端口,并通过环境变量将设置传给你的服务器。把设置集中在一处从环境变量中读取,并添加一条主机可以调用的路由,用来检查服务器是否正在运行。

  1. 在 config.js 中,从 PORT 环境变量读取 port,从 PAGE_SIZE 读取 pageSize。这两个值传入时都是文本,所以要把它们转换为数字。如果缺少某个变量,就保留当前的值:3000 和 10。
  2. 在 server.js 中导入 config。让服务器在 config.port 上启动,并输出它使用的端口。设置 PORT=8080 时,Console 会准确显示:
    Task tracker API on port 8080
  3. 在 routes/tasks.js 中也导入 config。在列表路由中,如果请求没有提供 ?limit=,就使用 config.pageSize,而不是 10。请求中提供的 ?limit= 仍然优先。
  4. 在 server.js 中,在 tasks 路由器之外添加 GET /health。它返回状态码 200,并准确返回:
    { "status": "ok" }

本课使用 PORT=8080 和 PAGE_SIZE=2 运行。

试试看:按下运行,Console 会输出 Task tracker API on port 8080。GET /api/v1/tasks 会返回 2 个任务,其中 "total": 3,"pages": 2。GET /api/v1/tasks?limit=3 会返回全部 3 个任务。GET /health 会返回 { "status": "ok" }。

亲手试试

// 在你的笔记本电脑和服务器之间会变化的设置。
// 从 process.env 读取每项设置,并将这些值作为默认值。
export const config = {
    port: 3000,
    pageSize: 10,
};
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

REST API中的所有课

自己练习: Express 在线编辑器