ホームページ > ウェブフロントエンド > jsチュートリアル > Deno および Oak Framework を使用した REST API 構築ガイド

Deno および Oak Framework を使用した REST API 構築ガイド

Susan Sarandon
リリース: 2024-11-03 10:34:02
オリジナル
584 人が閲覧しました

この投稿では、Deno、Oak フレームワーク、DenoKV データベースを使用して REST API を作成する方法を説明します。

これらすべてを行うためのシンプルな書籍 API を構築します。まずは、これらのテクノロジーについて理解しましょう。

デノって何?

Deno は Javascript を単純化することを目指しています。

開発者が Node で直面する問題の多くを修正することでこれを実現します。 Deno の直接的なアプローチは、開発者がより安全で効率的な最新の JavaScript コードを作成するのに役立ちます。

Deno の大きなセールスポイントはそのセキュリティです。デフォルトでは、開発者が明示的に許可しない限り、ファイル システム、ネットワーク、または環境変数へのアクセスは許可されません。また、Deno は開発者に追加の構成を必要とせずにネイティブ TypeScript サポートを提供します。

Deno に付属するその他の機能は次のとおりです:

  • 組み込みの標準ライブラリにより、多くのサードパーティ パッケージが不要になります
  • URL ベースのインポートを直接サポートする最新のモジュール システム
  • フォーマット、lint、テスト用のツールが組み込まれた強化された CLI
  • CommonJS ではなく ES モジュールを使用した一貫した JavaScript エクスペリエンス。

オークとは

Oak は、開発者が Web アプリと API を構築するのに役立つ Deno のミドルウェア フレームワークです。

Node.js の Express と同様に、HTTP リクエストの処理、ルーティングの管理、ミドルウェアの統合のためのツールが提供されます。 Oak には、すぐに使える TypeScript も含まれており、Deno のセキュリティと最新のランタイム環境の恩恵を受けています。これにより、開発者は使い慣れた構文を使用しながら、より最新の機能を利用できるようになります。

Oak を使用すると、開発者は安全、効率的、進歩的な環境で TypeScript ファーストの実践を採用できます。

DenoKVとは

DenoKV は、Deno の構造化データを管理するキーと値のデータベースです。

各データまたは「値」には一意の識別子または「キー」があり、そのキーを参照することでデータを簡単に取得できます。このアプローチにより、開発者は別のデータベース サーバーをセットアップせずにデータを管理できます。 DenoKV は、軽量アプリケーションと高速プロトタイピングに最適です。

開発者は、コードと並行してデータを管理するための簡単なソリューションを入手できます。

プロジェクトのセットアップ

デノをインストールする

curl -fsSL https://deno.land/install.sh | sh
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

macOS の場合: シェルの使用

irm https://deno.land/install.ps1 | iex
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

Windows の場合: PowerShell の使用

curl -fsSL https://deno.land/install.sh | sh
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

Linux の場合: シェルの使用
インストールをテストするには、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
  • book.dto.ts
  • book.types.ts
  • そして validation.ts

deno-oak-demo ディレクトリは次のようになります
Guide to Building a REST API with Deno and Oak Framework

Deno VSCode 拡張機能をインストールする

次に、Visual Studio Code で Deno を使用するためのサポートを追加する Deno の公式 VSCode 拡張機能をインストールする必要があります。

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 は 2 つの文字列を含む配列を受け取ります: 1 つは名前空間「books」を表し、もう 1 つは取得される特定の書籍のキーを表します。
次に、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 を使用して、新しいキーと値のペアを DB に保存できます。この場合、配列 (名前空間とキーの 2 つの文字列) と保存する値を受け取ります。

次に、ID によって書籍を更新するためのルート ハンドラーを追加します。

curl -fsSL https://deno.land/install.sh | sh
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

kv.set は、キーと値のペアの値を更新するために使用することもできます。この場合、配列 (名前空間と値が更新されるキーという 2 つの文字列を含む) と更新される新しい値を受け取ります。
最後に、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;
}
ログイン後にコピー
ログイン後にコピー

DenoKV はまだ不安定な API であるため、--stable-kv フラグを追加しました。

また、Deno のネット アクセスを許可する --allow-net フラグを追加しました。

これを配置すると、deno run dev を実行してアプリを起動できます。

結論

投稿は終わりました。

これで、Deno Oak と DenoKV データベースを使用して REST API を作成できるようになりました。

以上がDeno および Oak Framework を使用した REST API 構築ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート