引入
本章将介绍如何使用 Deno 创建一个基本的 HTTP 服务器。我们将从简单的示例开始,逐步深入,直到你可以创建功能齐全的 Web 服务。
安装 Deno
首先确保你的系统上已经安装了 Deno。你可以通过以下命令来检查是否已安装:
deno --version
如果没有安装,可以参考 Deno 的官方文档进行安装。
创建项目
我们将在当前目录下创建一个名为 basic-http-server
的新文件夹,并进入该文件夹:
mkdir basic-http-server cd basic-http-server
初始化项目
接下来,我们可以初始化一个新的 Deno 项目。虽然 Deno 不强制要求使用 deno.json
文件,但为了方便管理依赖和配置,建议创建一个。你可以手动创建这个文件,也可以运行以下命令自动生成:
deno run -A https://deno.land/x/seed@v0.6.0/mod.ts
这会生成一个 deno.json
文件,内容如下:
{ "name": "basic-http-server", "version": "1.0.0", "description": "", "main": "mod.ts", "scripts": {}, "dependencies": {} }
编写代码
接下来,我们将编写第一个 HTTP 服务器。在项目的根目录下创建一个名为 server.ts
的文件,并输入以下代码:
import { serve } from "https://deno.land/std@0.143.0/http/server.ts"; const server = serve({ port: 8000 }); console.log("HTTP server running on http://localhost:8000"); for await (const req of server) { req.respond({ body: "Hello World\n" }); }
这段代码引入了 Deno 的标准库中的 serve
函数,用于创建一个监听在 8000 端口的 HTTP 服务器。每当有请求到达时,服务器都会返回 "Hello World" 文本。
运行服务器
保存文件后,可以通过运行以下命令启动服务器:
deno run --allow-net server.ts
--allow-net
参数允许 Deno 访问网络,因为我们的 HTTP 服务器需要监听端口。
打开浏览器并访问 http://localhost:8000
,你应该能看到页面显示 "Hello World"。
路由处理
接下来我们将增加一些功能,比如处理不同的路由。修改 server.ts
文件,添加对不同路径的响应:
-- -------------------- ---- ------- ------ - ----- - ---- ----------------------------------------------- ----- ------ - ------- ----- ---- --- ----------------- ------ ------- -- ------------------------ --- ----- ------ --- -- ------- - ----- --- - --- ------------- --- ------------- ------ -------------- - ---- ---- ------------ - -------- -- --- ----------- ------ ---- --------- ------------ - ----- -- --- ----- ------- ------ -------- ------------ - ---- ------- - ------------- ----- ------------ --- -
现在我们有了一个简单的路由处理器,可以针对根路径 ("/"
) 和 /about
路径返回不同的消息。
添加静态文件支持
为了让服务器能够提供静态文件,如 HTML、CSS 或 JavaScript 文件,我们需要稍微调整代码。首先,创建一个 public
文件夹并在其中放入一些静态资源文件,例如 index.html
:
-- -------------------- ---- ------- --------- ----- ----- ---------- ------ ----- ---------------- ----- --------------- ---------------------------- ------------------- ----------- ------------ ------- ------ ----------- -- --- -------------- ------- -------
然后更新 server.ts
文件,加入静态文件处理逻辑:
-- -------------------- ---- ------- ------ - ----- - ---- ----------------------------------------------- ------ - ---------- - ---- ------------------------------------------ ----- ------ - ------- ----- ---- --- ----------------- ------ ------- -- ------------------------ --- ----- ------ --- -- ------- - ----- --- - --- ------------- --- ------------- ------ -------------- - ---- ---- ------------ - -------- -- --- ----------- ------ ---- --------- ------------ - ----- -- --- ----- ------- ------ -------- -- --------------------------------------- - ------------ - ----- --------------------------------------------- - ---- - ------------ - ---- ------- - - ------------- ----- ------------ --- -
在这个版本中,我们使用了 existsSync
函数来检查文件是否存在,并且使用 readTextFile
方法读取文件内容作为响应体。
总结
至此,你已经学会了如何使用 Deno 创建一个基本的 HTTP 服务器,包括简单的路由处理以及静态文件的支持。这只是 Deno 众多强大功能的一个起点。通过进一步的学习和实践,你可以构建出更复杂和功能丰富的 Web 应用程序。