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.
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:
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.
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.
curl -fsSL https://deno.land/install.sh | sh
Für macOS: Shell verwenden
irm https://deno.land/install.ps1 | iex
Für Windows: Verwenden von PowerShell
curl -fsSL https://deno.land/install.sh | sh
Für Linux: Shell verwenden
Um Ihre Installation zu testen, führen Sie deno -version.
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
Als nächstes müssen Sie 4 neue Dateien im Verzeichnis deno-oak-demo erstellen:
Ihr Deno-Oak-Demo-Verzeichnis sollte jetzt so aussehen
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.
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
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.
Fügen Sie in der Datei book.types.ts den folgenden Code hinzu
curl -fsSL https://deno.land/install.sh | sh
Und fügen Sie dies in der Datei book.dto.ts hinzu
irm https://deno.land/install.ps1 | iex
Fügen Sie den folgenden Code zu validation.ts hinzu
curl -fsSL https://deno.land/install.sh | sh
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; }
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; }
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(), });
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";
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;
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; }
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
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
kv.delete löscht ein bestimmtes Schlüssel-Wert-Paar.
Fügen Sie in der main.ts-Datei den folgenden Code hinzu:
curl -fsSL https://deno.land/install.sh | sh
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; }
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.
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!