Heim > Web-Frontend > js-Tutorial > Leitfaden zum Erstellen einer REST-API mit Deno und Oak Framework

Leitfaden zum Erstellen einer REST-API mit Deno und Oak Framework

Susan Sarandon
Freigeben: 2024-11-03 10:34:02
Original
583 Leute haben es durchsucht

Dieser Beitrag führt Sie durch die Erstellung einer REST-API mit Deno, dem Oak-Framework und einer DenoKV-Datenbank.

Wir erstellen für all dies eine einfache Buch-API. Aber zuerst wollen wir diese Technologien verstehen.

Was ist Deno?

Deno zielt darauf ab, Javascript zu vereinfachen.

Dazu werden viele der Probleme behoben, mit denen Entwickler bei Node konfrontiert sind. Der unkomplizierte Ansatz von Deno hilft Entwicklern, sichereren, effizienteren und modernen JavaScript-Code zu schreiben.

Ein großes Verkaufsargument von Deno ist seine Sicherheit. Standardmäßig ist kein Zugriff auf das Dateisystem, das Netzwerk oder Umgebungsvariablen zulässig, es sei denn, der Entwickler erlaubt dies ausdrücklich. Deno bietet Entwicklern außerdem native TypeScript-Unterstützung, ohne dass eine zusätzliche Konfiguration erforderlich ist.

Weitere Funktionen von Deno sind:

  • Eine integrierte Standardbibliothek, die viele Pakete von Drittanbietern überflüssig macht
  • Ein modernes Modulsystem, das URL-basierte Importe direkt unterstützt
  • Eine verbesserte CLI mit integrierten Tools zum Formatieren, Flusen und Testen
  • Eine konsistente JavaScript-Erfahrung mit ES-Modulen anstelle von CommonJS.

Was ist Eiche?

Oak ist ein Middleware-Framework für Deno, das Entwicklern beim Erstellen von Web-Apps und APIs hilft.

Es bietet Tools für die Bearbeitung von HTTP-Anfragen, die Verwaltung des Routings und die Integration von Middleware, ähnlich wie Express in Node.js. Oak verfügt außerdem sofort über TypeScript und profitiert von der Sicherheit und modernen Laufzeitumgebung von Deno. Dadurch erhalten Entwickler eine vertraute Syntax und profitieren dennoch von moderneren Funktionen.

Oak ermöglicht Entwicklern die Einführung von TypeScript-First-Praktiken in einer sicheren, effizienten und fortschrittlichen Umgebung.

Was ist DenoKV?

DenoKV ist eine Schlüsselwertdatenbank, die strukturierte Daten für Deno verwaltet.

Jedes Datenelement oder jeder „Wert“ hat einen eindeutigen Bezeichner oder „Schlüssel“, was das Abrufen von Daten durch Verweis auf seinen Schlüssel erleichtert. Dieser Ansatz ermöglicht es Entwicklern, Daten zu verwalten, ohne einen separaten Datenbankserver einzurichten. DenoKV ist ideal für leichte Anwendungen und schnelles Prototyping.

Entwickler erhalten eine unkomplizierte Lösung für die Datenverwaltung direkt neben ihrem Code.

Projekt-Setup

Installieren Sie Deno

curl -fsSL https://deno.land/install.sh | sh
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Für macOS: Shell verwenden

irm https://deno.land/install.ps1 | iex
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Für Windows: Verwenden von PowerShell

curl -fsSL https://deno.land/install.sh | sh
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Für Linux: Shell verwenden
Um Ihre Installation zu testen, führen Sie deno -version.

aus

Guide to Building a REST API with Deno and Oak Framework

Neues Projekt erstellen

Führen Sie den Befehl deno init deno-oak-demo aus, um ein neues Projekt namens deno-oak-demo zu erstellen, und wechseln Sie dann mit cd hinein

Guide to Building a REST API with Deno and Oak Framework

Als nächstes müssen Sie 4 neue Dateien im Verzeichnis deno-oak-demo erstellen:

  • book.routes.ts
  • book.dto.ts
  • book.types.ts
  • Und validation.ts

Ihr Deno-Oak-Demo-Verzeichnis sollte jetzt so aussehen
Guide to Building a REST API with Deno and Oak Framework

Installieren Sie die Deno VSCode-Erweiterung

Als nächstes müssen Sie die offizielle VSCode-Erweiterung von Deno installieren, die Unterstützung für die Verwendung von Deno mit Visual Studio Code hinzufügt.

Guide to Building a REST API with Deno and Oak Framework

Installieren Sie Oak

Verwenden Sie den Befehl deno add jsr:@oak/oak, um das Oak-Framework als Abhängigkeit zu installieren.
Ihre deno.json-Datei sollte jetzt so aussehen

Guide to Building a REST API with Deno and Oak Framework

Jedes Mal, wenn wir ein Paket in Deno installieren, wird es als Import in die Datei deno.json eingefügt. Wenn wir dieses Paket dann in eine Datei importieren möchten, können wir entweder den in deno.json definierten Alias ​​verwenden oder direkt auf die URL des Pakets verweisen.

Definieren von Typen und DTOs

Fügen Sie in der Datei book.types.ts den folgenden Code hinzu

curl -fsSL https://deno.land/install.sh | sh
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Und fügen Sie dies in der Datei book.dto.ts hinzu

irm https://deno.land/install.ps1 | iex
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Validierung anfordern

Fügen Sie den folgenden Code zu validation.ts hinzu

curl -fsSL https://deno.land/install.sh | sh
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Book Router konfigurieren

Zu Beginn importieren wir den Oak Router, die Book-Schnittstelle, createBookSchema und updateBookSchema in die Datei book.routes.ts:

export interface Book {
    id: string;
    title: string;
    author: string;
    description: string;
}
Nach dem Login kopieren
Nach dem Login kopieren

Als nächstes initialisieren wir die DenoKV-Datenbank und erstellen eine neue Router-Instanz zur Verarbeitung von HTTP-Routen.

export interface CreateBookDTO {
    title: string;
    author: string;
    description: string;
}
Nach dem Login kopieren

Als nächstes erstellen wir eine Hilfsfunktion, um ein Buch anhand seiner ID abzurufen:

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(),
});
Nach dem Login kopieren

kv.get benötigt ein Array mit zwei Zeichenfolgen: Eine stellt den Namespace „books“ dar und die andere stellt den Schlüssel für das spezifische Buch dar, das abgerufen wird.
Als Nächstes definieren wir den Routenhandler, um ein einzelnes Buch anhand der ID abzurufen:

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

Im Gegensatz zu Express wird in Oak sowohl auf die Anfrage als auch auf die Antwort über das Kontextobjekt zugegriffen, das sowohl über die Anfragedaten als auch über die Antwortmethoden verfügt, was eine optimierte Möglichkeit zur Handhabung von HTTP-Interaktionen bietet.

Als nächstes fügen Sie den Routenhandler hinzu, um alle Bücher abzurufen:

const kv = await Deno.openKv();
const bookRouter = new Router;
Nach dem Login kopieren

Kv.list ruft alle Schlüssel-Wert-Paare ab, die ein gemeinsames Präfix (Namespace) haben.

Als nächstes fügen Sie den Routenhandler hinzu, um ein neues Buch zu erstellen:

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

Kv.set kann verwendet werden, um ein neues Schlüssel-Wert-Paar in der Datenbank zu speichern. In diesem Fall werden ein Array (mit zwei Zeichenfolgen, dem Namespace und dem Schlüssel) und der zu speichernde Wert benötigt.

Als nächstes fügen Sie den Routenhandler hinzu, um ein Buch anhand der ID zu aktualisieren:

curl -fsSL https://deno.land/install.sh | sh
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

kv.set kann auch verwendet werden, um den Wert eines Schlüssel-Wert-Paares zu aktualisieren. In diesem Fall benötigt es ein Array (mit zwei Zeichenfolgen; den Namespace und den Schlüssel, dessen Wert aktualisiert wird) und den neuen Wert, mit dem aktualisiert werden soll.
Zum Schluss fügen wir den Routenhandler hinzu, um ein Buch anhand der ID zu löschen:

irm https://deno.land/install.ps1 | iex
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

kv.delete löscht ein bestimmtes Schlüssel-Wert-Paar.

Initialisieren Sie die Oak-Anwendung

Fügen Sie in der main.ts-Datei den folgenden Code hinzu:

curl -fsSL https://deno.land/install.sh | sh
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

App ausführen

Wir müssen eine kleine Änderung an unserer deno.json vornehmen, um unsere App auszuführen.

export interface Book {
    id: string;
    title: string;
    author: string;
    description: string;
}
Nach dem Login kopieren
Nach dem Login kopieren

Wir haben das Flag --stable-kv hinzugefügt, da DenoKV immer noch eine instabile API ist.

Außerdem haben wir das Flag --allow-net hinzugefügt, um Deno-Netzzugriff zu gewähren.

Damit können wir unsere App starten, indem wir deno run dev ausführen.

Abschluss

Wir sind am Ende des Beitrags angelangt.

Jetzt können Sie eine REST-API mit Deno Oak und einer DenoKV-Datenbank erstellen.

Das obige ist der detaillierte Inhalt vonLeitfaden zum Erstellen einer REST-API mit Deno und Oak Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage