介绍
Deno 是一个新型的 JavaScript 运行时环境,由著名 Node.js 创始人 Ryan Dahl 开发。相比于 Node.js,Deno 具有更安全,更高效,更简洁的特性,其中最受前端开发者欢迎的是其内置了 ES 模块支持和 TypeScript 支持。在本文中,我们将介绍如何使用 Deno 构建 RESTful API,为前端开发提供有用的指导。
步骤
1. 安装 Deno
前往 Deno 官网 https://deno.land,下载并安装最新版本的 Deno 运行时环境。
2. 构建项目目录结构
创建一个名为 "rest-api" 的项目目录,进入该目录后,创建以下目录结构:
-- -------------------- ---- ------- -------- --- ------ --- ----------- - --- -------- --- ---------- - --- ----------------- --- ------ - --- ------------- --- ------ - --- -------------- --- -------- - --- ---------------- --- ----- - --- ----------- - --- ----------- - - --- ------------- - --- ------ - - --- ------------- - --- -------- - --- ------------- --- -------------
3. 安装依赖
在终端中进入项目目录,执行以下命令安装需要的依赖:
deno install --allow-net --allow-read --unstable https://deno.land/x/denon/denon.ts
deno install --allow-net --allow-read --unstable https://deno.land/x/djwt/cli.ts
4. 配置 TypeScript
在项目根目录下创建 "tsconfig.json" 文件,并添加以下配置:
-- -------------------- ---- ------- - ------------------ - ------------------- ------- ------------------ ----- ---------- ----- ---------------- ----- --------- --------- --------- --------- --------- ----------- ------------ ----- --------- ---- -- ---------- ----------- ---------- ------------ ------------------- -
5. 实现功能
下面,我们将按照以下步骤,逐个实现用户身份认证、获取用户信息、创建用户、更新用户和删除用户这几个功能。
认证
在 "app.ts" 文件中添加以下代码:
-- -------------------- ---- ------- ------ - ----------- - ---- --------------------------------- ------ - ------- - ---- ---------------------------------- ------ - ------ - ---- -------------------------- ------ - -------------- - ---- ----------------------------------- ----- --- - --- -------------- ------------------- ------------------------ ------------------------- --------------------------------- ------------------- --------- -- ------------------------ ----- ------------ ----- ---- ---
AuthMiddleware 验证用户的 Token 是否有效。当用户访问被保护的路由时,该中间件会先进行身份认证,只有认证通过才会继续访问相应的路由。
获取用户信息
在 "controllers/users.ts" 文件中添加以下代码:
-- -------------------- ---- ------- ------ - ------- - ---- --------------------------------- ------ - ----------- - ---- ------------------------------- ------ ----- -------------- - ------ ----- ------------ -------- - ----- ------ - ---------------------- --- - ----- ---- - ----- -------------------------------- ------------------- - ---- ----------------- - ----- - ----- ------- - ------------------- - ---- ----------------- - - -------- ------------- -- - - -
在 "routes/users.route.ts" 文件中添加以下代码:
import { Router } from "https://deno.land/x/oak/mod.ts"; import { UserController } from "../controllers/users.ts"; export const router = new Router({ prefix: "/api" }); router.get("/users/:id", UserController.getUser);
创建用户
在 "controllers/users.ts" 文件中添加以下代码:
-- -------------------- ---- ------- ------ - ------- - ---- --------------------------------- ------ - ----------- - ---- ------------------------------- ------ - ---- - ---- -------------------------- ------ ----- -------------- - ------ ----- --------------- -------- - ----- ---- - ----- ------------------------ -- ----- --- - ----- ------- - ----- ----------------------------- ------------------- - ---- ----------------- - -------- - ----- ------- - ------------------- - ---- ----------------- - - -------- ------------- -- - - -
在 "routes/users.route.ts" 文件中添加以下代码:
import { Router } from "https://deno.land/x/oak/mod.ts"; import { UserController } from "../controllers/users.ts"; export const router = new Router({ prefix: "/api" }); router.post("/users", UserController.createUser);
更新用户
在 "controllers/users.ts" 文件中添加以下代码:
-- -------------------- ---- ------- ------ - ------- - ---- --------------------------------- ------ - ----------- - ---- ------------------------------- ------ - ---- - ---- -------------------------- ------ ----- -------------- - ------ ----- --------------- -------- - ----- ------ - ---------------------- ----- ---- - ----- ------------------------ -- ----- --- - ----- ----------- - ----- ------------------------------ ------ ------------------- - ---- ----------------- - ------------ - ----- ------- - ------------------- - ---- ----------------- - - -------- ------------- -- - - -
在 "routes/users.route.ts" 文件中添加以下代码:
import { Router } from "https://deno.land/x/oak/mod.ts"; import { UserController } from "../controllers/users.ts"; export const router = new Router({ prefix: "/api" }); router.put("/users/:id", UserController.updateUser);
删除用户
在 "controllers/users.ts" 文件中添加以下代码:
-- -------------------- ---- ------- ------ - ------- - ---- --------------------------------- ------ - ----------- - ---- ------------------------------- ------ ----- -------------- - ------ ----- --------------- -------- - ----- ------ - ---------------------- --- - ----- ------------------------------- ------------------- - ---- - ----- ------- - ------------------- - ---- ----------------- - - -------- ------------- -- - - -
在 "routes/users.route.ts" 文件中添加以下代码:
import { Router } from "https://deno.land/x/oak/mod.ts"; import { UserController } from "../controllers/users.ts"; export const router = new Router({ prefix: "/api" }); router.delete("/users/:id", UserController.deleteUser);
到此,我们已经完成了一个简单的 Deno RESTful API。通过运行以下命令,启动该应用:
denon start
结论
Deno 是一个有趣的 JavaScript 运行时环境,它比 Node.js 具有更多新的特性和优势,为前端开发提供了新的选择。在本文中,我们介绍了如何使用 Deno 构建 RESTful API,其中包括用户身份认证、获取用户信息、创建用户、更新用户和删除用户这几个功能。对于那些正在学习 Deno 或者想要使用 Deno 开发 RESTful API 的前端开发者来说,本文提供了有用的指导。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f3e7def40ec5a964e5b859