首頁 >web前端 >js教程 >使用 Deno 和 Oak 框架建立 REST API 的指南

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

Susan Sarandon
Susan Sarandon原創
2024-11-03 10:34:02600瀏覽

本文將引導您使用 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