Menu
CoddyTech

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 会发送响应正文并结束响应,所以要在调用它之前设置状态码。

challenge icon

挑战

简单

继续学习 Express 之前,你先用 Node 自带的 node:http 模块编写一个小型服务器,看看 Express 帮你完成了哪些工作。

  1. 在 server.js 中,查看传给 http.createServer 的函数里的 req.url。当它是 / 时,发送文本 Home。
  2. 对于其他所有路径,将状态码设为 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');
});
quiz icon自我测试

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

Express 基础中的所有课

自己练习: Express 在线编辑器