首页  >  文章  >  web前端  >  使用 Deno 和 Oak 框架构建 REST API 的指南

使用 Deno 和 Oak 框架构建 REST API 的指南

Susan Sarandon
Susan Sarandon原创
2024-11-03 10:34:02506浏览

本文将指导您使用 Deno、Oak 框架和 DenoKV 数据库创建 REST API。

我们将构建一个简单的图书 API 来完成所有这一切。但首先,让我们了解这些技术。

什么是德诺?

Deno 旨在简化 Javascript。

它通过解决开发人员在使用 Node.js 时面临的许多问题来实现这一点。 Deno 简单的方法可以帮助开发人员编写更安全、高效、现代的 JavaScript 代码。

Deno 的一个巨大卖点是它的安全性。默认情况下,除非开发人员明确允许,否则它不允许访问文件系统、网络或环境变量。 Deno 还为开发人员提供原生 TypeScript 支持,无需额外配置。

Deno 附带的其他功能有:

  • 内置标准库,无需许多第三方软件包
  • 现代模块系统,直接支持基于 URL 的导入
  • 增强的 CLI,带有用于格式化、linting 和测试的内置工具
  • 使用 ES 模块而不是 CommonJS 获得一致的 JavaScript 体验。

什么是橡木

Oak 是 Deno 的中间件框架,可帮助开发人员构建 Web 应用程序和 API。

它提供了处理 HTTP 请求、管理路由和集成中间件的工具,类似于 Node.js 中的 Express。 Oak 还具有开箱即用的 TypeScript,并受益于 Deno 的安全性和现代运行时环境。这为开发人员提供了熟悉的语法,同时仍然享受更多现代功能。

Oak 允许开发者在安全、高效、渐进的环境中采用 TypeScript 优先的实践。

什么是 DenoKV

DenoKV 是一个管理 Deno 结构化数据的键值数据库。

每条数据或“值”都有一个唯一的标识符或“键”,可以通过引用其键轻松获取数据。这种方法允许开发人员管理数据而无需设置单独的数据库服务器。 DenoKV 非常适合轻量级应用和快速原型设计。

开发人员可以获得一个简单的解决方案,可以在代码旁边管理数据。

项目设置

安装 Deno

curl -fsSL https://deno.land/install.sh | sh

对于 macOS:使用 Shell

irm https://deno.land/install.ps1 | iex

对于 Windows:使用 PowerShell

curl -fsSL https://deno.land/install.sh | sh

对于 Linux:使用 Shell
要测试您的安装,请运行 deno -version。

Guide to Building a REST API with Deno and Oak Framework

创建新项目

运行命令 deno init deno-oak-demo 创建一个名为 deno-oak-demo 的新项目,然后 cd 进入它

Guide to Building a REST API with Deno and Oak Framework

接下来,您需要在 deno-oak-demo 目录中创建 4 个新文件:

  • book.routes.ts
  • 书.dto.ts
  • book.types.ts
  • 和validation.ts

您的 eno-oak-demo 目录现在应该如下所示
Guide to Building a REST API with Deno and Oak Framework

安装 Deno VSCode 扩展

接下来,您需要安装 Deno 的官方 VSCode 扩展,该扩展添加了对将 Deno 与 Visual Studio Code 结合使用的支持。

Guide to Building a REST API with Deno and Oak Framework

安装橡木

使用命令 deno add jsr:@oak/oak 将 Oak 框架安装为依赖项。
您的 deno.json 文件现在应该如下所示

Guide to Building a REST API with Deno and Oak Framework

每次我们在 Deno 中安装一个包时,它都会作为导入被放置在 deno.json 文件中。然后,如果我们想将此包导入到文件中,我们可以使用 deno.json 中定义的别名或直接引用包的 URL。

定义类型和 DTO

在 book.types.ts 文件中添加以下代码

curl -fsSL https://deno.land/install.sh | sh

并在 book.dto.ts 文件中添加此

irm https://deno.land/install.ps1 | iex

请求验证

将以下代码添加到validation.ts

curl -fsSL https://deno.land/install.sh | sh

配置图书路由器

首先,我们将 Oak Router、Book 接口、createBookSchema 和 updateBookSchema 导入到 book.routes.ts 文件中:

export interface Book {
    id: string;
    title: string;
    author: string;
    description: string;
}

接下来,我们将初始化 DenoKV 数据库并创建一个新的路由器实例来处理 HTTP 路由。

export interface CreateBookDTO {
    title: string;
    author: string;
    description: string;
}

接下来,我们将创建一个辅助函数来通过 id 获取一本书:

import { z } from "https://deno.land/x/zod@v3.17.0/mod.ts";

export const createBookSchema = z.object({
    title: z.string(),
    author: z.string(),
    description: z.string(),
});

export const updateBookSchema = z.object({
    title: z.string().optional(),
    author: z.string().optional(),
    description: z.string().optional(),
});

kv.get 接受一个包含两个字符串的数组:一个表示名称空间“books”,另一个表示正在检索的特定书籍的键。
接下来,让我们定义路由处理程序以通过 id 获取单本书:

import { Router } from "@oak/oak/router";
import type { Book } from "./book.types.ts";
import { createBookSchema, updateBookSchema } from "./validation.ts";

与 Express 不同,在 Oak 中,请求和响应都是从上下文对象访问的,上下文对象同时具有请求数据和响应方法,从而提供了处理 HTTP 交互的简化方法。

接下来,添加路由处理程序以获取所有书籍:

const kv = await Deno.openKv();
const bookRouter = new Router;

Kv.list 检索共享公共前缀(命名空间)的所有键值对。

接下来,添加路由处理程序以创建新书:

async function getBookById(id: string) {
    const entry = await kv.get(["books", id]);
    return entry.value as Book | null;
}

Kv.set 可用于在数据库中保存新的键值对,在本例中,它需要一个数组(包含两个字符串;命名空间和键)和要保存的值。

接下来,添加路由处理程序以按 id 更新书籍:

curl -fsSL https://deno.land/install.sh | sh

kv.set 还可以用于更新键值对的值。在这种情况下,它需要一个数组(带有两个字符串;命名空间和将更新其值的键)和要更新的新值。
最后,让我们添加路由处理程序以按 id 删除书籍:

irm https://deno.land/install.ps1 | iex

kv.delete 删除给定的键值对。

初始化Oak应用程序

在main.ts文件中添加以下代码:

curl -fsSL https://deno.land/install.sh | sh

运行应用程序

我们需要对 deno.json 进行一些小更改才能运行我们的应用程序。

export interface Book {
    id: string;
    title: string;
    author: string;
    description: string;
}

我们添加了 --stable-kv 标志,因为 DenoKV 仍然是一个不稳定的 API。

此外,我们还添加了 --allow-net 标志来授予 Deno 网络访问权限。

完成此操作后,我们可以通过运行 deno run dev 来启动我们的应用程序。

结论

文章已经结束了。

现在您可以使用 Deno Oak 和 DenoKV 数据库创建 REST API。

以上是使用 Deno 和 Oak 框架构建 REST API 的指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn