http 模块
本课属于 Coddy Node.js 学习旅程的“Express 基础”单元。第 2 课,共 23 课。
Express 会替你完成一些你看不到的工作。Node 自带的 node:http 模块是 Express 的构建基础,它能展示这一点。
import http from 'node:http';
const server = http.createServer((req, res) => {
if (req.url === '/repairs') {
res.statusCode = 503;
res.end('Repairs are closed today');
return;
}
res.end('Welcome to the bike shop');
});
server.listen(3000);Node 会针对每个请求调用这个函数。这里没有路由:你需要自己比较 req.url,也就是请求的路径。res.statusCode 是状态码,用一个数字表示请求的处理结果:200 表示正常,404 表示未找到。res.end 会发送响应正文并结束响应,所以要在调用它之前设置状态码。
挑战
简单继续学习 Express 之前,你先用 Node 自带的 node:http 模块编写一个小型服务器,看看 Express 帮你完成了哪些工作。
- 在
server.js中,查看传给http.createServer的函数里的req.url。当它是/时,发送文本Home。 - 对于其他所有路径,将状态码设为 404,并发送文本
Not found。先设置状态,再发送响应。一旦响应结束,状态就无法更改。
试试看:按“运行”,然后发送 /。你应该会看到 Home,状态码为 200。发送 /nope,然后发送 /recipes/today。这两种情况都应该显示 Not found,状态码为 404。在第 1 课中,Express 会替你发送这个 404 响应;现在你要自己编写。
亲手试试
import http from 'node:http';
const server = http.createServer((req, res) => {
// 访问 / 时返回 Home,访问其他路径时返回 404 Not found。
res.end('Hello from Node');
});
server.listen(3000, () => {
console.log('Listening on port 3000');
});
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
Express 基础中的所有课
自己练习: Express 在线编辑器