使用 Deno 创建 REST API 的基本步骤
在本章中,我们将介绍如何使用 Deno 框架来创建一个简单的 REST API。我们将从创建项目的基本结构开始,然后逐步添加路由、控制器和中间件等组件。
创建项目文件夹
首先,我们需要创建一个新的文件夹用于存放我们的项目文件。可以使用命令行工具或者文件浏览器来创建新的文件夹,例如:
mkdir deno-rest-api cd deno-rest-api
初始化项目
接下来,我们需要初始化项目。在 Deno 中,我们可以通过创建 deno.json
文件来配置项目。这个文件类似于 Node.js 的 package.json
或者 Python 的 pyproject.toml
。
-- -------------------- ---- ------- - ------- ---------------- ---------- -------- -------------- -- ------ ---- --- ----- ------ ---------- ------ --------------- - --------------------------------- ---- - -
安装依赖
在 Deno 中,我们可以通过运行以下命令来安装项目依赖:
deno install --import-map=deno.json https://deno.land/x/oak/mod.ts
这里我们使用了 Oak 框架,这是一个流行的 Deno 框架,它提供了许多与 Express 类似的功能。
创建入口文件
接下来,我们需要创建一个入口文件,用于启动我们的服务器。在这个例子中,我们将创建一个名为 server.ts
的文件,并将其作为项目的入口点。
-- -------------------- ---- ------- ------ - ----------- - ---- --------------------------------- ----- --- - --- -------------- ------------- -- - ----------------- - ------ -------- --- ---------------------- -- ---- ------- ----- ------------ ----- ---- ---
运行服务器
最后,我们可以使用以下命令来运行我们的服务器:
deno run --allow-net server.ts
打开浏览器并访问 http://localhost:8000
,你应该能看到 "Hello World!" 的输出。
添加路由和控制器
在本节中,我们将学习如何为我们的 API 添加更多的路由和控制器。
添加路由
为了更好地组织代码,我们可以在 routes
文件夹中创建不同的路由文件。例如,我们可以在 routes/users.ts
文件中定义用户相关的路由。
-- -------------------- ---- ------- ------ - ------ - ---- --------------------------------- ----- ------ - --- --------- -------------------- --------- -- - --------------------- - -- --- -- ----- ----- ---- --- --- ------ ------- -------
注册路由
然后,我们需要在主入口文件中注册这些路由。
-- -------------------- ---- ------- ------ - ----------- - ---- --------------------------------- ------ ---------- ---- -------------------- ----- --- - --- -------------- ----------------------------- ------------------------------------- ---------------------- -- ---- ------- ----- ------------ ----- ---- ---
添加控制器
为了更好地分离业务逻辑,我们可以在 controllers
文件夹中创建控制器文件。例如,我们可以在 controllers/userController.ts
文件中定义用户相关的控制器。
export const getUsers = () => { return [{ id: 1, name: "John Doe" }]; };
然后在路由文件中使用控制器。
-- -------------------- ---- ------- ------ - ------ - ---- --------------------------------- ------ - -------- - ---- ----------------------------------- ----- ------ - --- --------- -------------------- --------- -- - --------------------- - ----------- --- ------ ------- -------
添加中间件
中间件是在请求到达控制器之前或之后执行的函数。它们可以用于日志记录、身份验证等多种用途。
创建中间件
我们可以在 middlewares
文件夹中创建中间件文件。例如,我们可以在 middlewares/logger.ts
文件中定义一个简单的日志中间件。
import { Context } from "https://deno.land/x/oak/mod.ts"; export const loggerMiddleware = ({ request, response }: Context, next) => { console.log(`Request ${request.method} ${request.url}`); await next(); console.log(`Response status ${response.status}`); };
注册中间件
然后,我们需要在主入口文件中注册中间件。
-- -------------------- ---- ------- ------ - ----------- - ---- --------------------------------- ------ ---------- ---- -------------------- ------ - ---------------- - ---- -------------------------- ----- --- - --- -------------- -------------------------- ----------------------------- ------------------------------------- ---------------------- -- ---- ------- ----- ------------ ----- ---- ---
添加数据库支持
在本节中,我们将学习如何为我们的 API 添加数据库支持。我们将使用 Deno 的原生 SQL 支持来连接 SQLite 数据库。
安装 SQLite3 模块
首先,我们需要安装 SQLite3 模块。
deno install --allow-read --allow-write --allow-net --unstable https://deno.land/x/sqlite3/mod.ts
配置数据库
然后,我们需要在项目根目录下创建一个 database
文件夹,并在其中创建一个 SQLite 数据库文件。
mkdir database sqlite3 database/users.db < schema.sql
这里的 schema.sql
文件包含数据库的结构定义。
连接数据库
接下来,我们需要在项目中添加一个数据库连接模块。
import { open } from "https://deno.land/x/sqlite3/mod.ts"; const db = open("./database/users.db"); export default db;
使用数据库
最后,我们需要在控制器中使用数据库。
import db from "../database/db.ts"; export const getUsers = async () => { const result = await db.all("SELECT * FROM users"); return result; };
总结
通过本章的学习,我们了解了如何使用 Deno 来创建一个简单的 REST API。我们从创建项目的基本结构开始,逐步添加了路由、控制器和中间件等组件,并最终实现了数据库的支持。希望这能帮助你在 Deno 上构建更复杂的 Web 应用程序。