配置
本课属于 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。
挑战
简单在托管服务上,主机会选择端口,并通过环境变量将设置传给你的服务器。把设置集中在一处从环境变量中读取,并添加一条主机可以调用的路由,用来检查服务器是否正在运行。
- 在
config.js中,从PORT环境变量读取port,从PAGE_SIZE读取pageSize。这两个值传入时都是文本,所以要把它们转换为数字。如果缺少某个变量,就保留当前的值:3000 和 10。 - 在
server.js中导入config。让服务器在config.port上启动,并输出它使用的端口。设置PORT=8080时,Console 会准确显示:Task tracker API on port 8080 - 在
routes/tasks.js中也导入config。在列表路由中,如果请求没有提供?limit=,就使用config.pageSize,而不是 10。请求中提供的?limit=仍然优先。 - 在
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,
};
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
REST API中的所有课
自己练习: Express 在线编辑器