安装 Express,用路由、URL 参数和中间件搭建你的第一个服务器。
在 Kodokon 中打开本课你已经知道如何用原生的 http 模块启动一个服务器:在那里一切都要手动完成,从读取 URL 到组装响应头。Express 是在 Node 一侧让 Web 开发标准化的框架:路由、中间件、简洁的 API,同时又不隐藏协议的任何细节。创建一个项目并安装它。
mkdir kodokon-api
cd kodokon-api
npm init -y
npm install express给你的 package.json 添加值为 module 的 type 属性:整个项目都将使用 ES 模块。然后创建 server.js。寥寥几行就足以搭起一个可用的服务器:你创建应用、声明一个路由,并监听某个端口。
import express from "express";
const app = express();
app.get("/", (req, res) => {
res.send("Kodokon API online");
});
app.listen(3000, () => {
console.log("http://localhost:3000");
});一个路由把某个 HTTP 方法和某条路径映射到一个函数上。动态片段用冒号声明:在 /users/:id 中,它的值可以通过 req.params.id 取到。查询参数(?q=node)会出现在 req.query 里。请记住这个区别:路径标识资源,查询字符串细化请求。
app.get("/users/:id", (req, res) => {
const { id } = req.params;
res.json({ id, name: "User " + id });
});
app.get("/search", (req, res) => {
const { q } = req.query;
res.json({ query: q ?? "" });
});中间件是一个在请求到达和你的路由之间运行的函数。它的签名是:(req, res, next)。它可以丰富 req、直接响应,或者用 next() 把控制权交出去。Express 本质上就是一条中间件链:日志、认证、请求体解析。下面这个会把每个请求连同它的耗时一起记录下来:
app.use((req, res, next) => {
const start = Date.now();
res.on("finish", () => {
const ms = Date.now() - start;
console.log(`${req.method} ${req.url} ${ms}ms`);
});
next();
});/users/:id 声明。你在哪里读取 id 的值?req.query.id 中req.params.id 中req.body.id 中next() 会做什么?import 语法,你需要往 package.json 里添加什么?module 的 type 属性true 的 esm 属性