Cet article vous guide dans la création d'une API REST à l'aide de Deno, du framework Oak et d'une base de données DenoKV.
Nous allons créer une API de livre simple pour faire tout cela. Mais d'abord, comprenons ces technologies.
Deno vise à simplifier Javascript.
Il le fait en résolvant de nombreux problèmes auxquels les développeurs sont confrontés avec Node. L'approche simple de Deno aide les développeurs à écrire du code JavaScript plus sécurisé, plus efficace et plus moderne.
Un énorme argument de vente de Deno est sa sécurité. Par défaut, il n'autorise pas l'accès au système de fichiers, au réseau ou aux variables d'environnement, sauf autorisation explicite du développeur. Deno offre également aux développeurs une prise en charge native de TypeScript sans avoir besoin de configuration supplémentaire.
Les autres fonctionnalités fournies avec Deno sont :
Oak est un framework middleware pour Deno qui aide les développeurs à créer des applications Web et des API.
Il fournit des outils pour gérer les requêtes HTTP, gérer le routage et intégrer un middleware, similaires à Express dans Node.js. Oak dispose également de TypeScript prêt à l'emploi et bénéficie de la sécurité et de l'environnement d'exécution moderne de Deno. Cela donne aux développeurs une syntaxe familière tout en bénéficiant de fonctionnalités plus modernes.
Oak permet aux développeurs d'adopter des pratiques axées sur TypeScript dans un environnement sûr, efficace et progressif.
DenoKV est une base de données clé-valeur qui gère les données structurées pour Deno.
Chaque élément de données ou « valeur » possède un identifiant unique ou « clé », ce qui facilite la récupération des données en référençant sa clé. Cette approche permet aux développeurs de gérer les données sans configurer un serveur de base de données distinct. DenoKV est idéal pour les applications légères et le prototypage rapide.
Les développeurs bénéficient d'une solution simple pour gérer les données directement à côté de leur code.
curl -fsSL https://deno.land/install.sh | sh
Pour macOS : utilisation de Shell
irm https://deno.land/install.ps1 | iex
Pour Windows : utiliser PowerShell
curl -fsSL https://deno.land/install.sh | sh
Pour Linux : utilisation de Shell
Pour tester votre installation, exécutez deno -version.
Exécutez la commande deno init deno-oak-demo pour créer un nouveau projet appelé deno-oak-demo, puis cd-y
Ensuite, vous devrez créer 4 nouveaux fichiers dans le répertoire deno-oak-demo :
Votre répertoire deno-oak-demo devrait maintenant ressembler à ceci
Ensuite, vous devrez installer l'extension VSCode officielle de Deno qui ajoute la prise en charge de l'utilisation de Deno avec Visual Studio Code.
Utilisez la commande deno add jsr:@oak/oak pour installer le framework Oak en tant que dépendance.
Votre fichier deno.json devrait maintenant ressembler à ceci
Chaque fois que nous installons un package dans Deno, il est placé dans le fichier deno.json en tant qu'importation. Ensuite, si nous souhaitons importer ce package dans un fichier, nous pouvons soit utiliser l'alias défini dans le deno.json, soit référencer directement l'URL du package.
Dans le fichier book.types.ts ajoutez le code suivant
curl -fsSL https://deno.land/install.sh | sh
Et dans le fichier book.dto.ts ajoutez ceci
irm https://deno.land/install.ps1 | iex
Ajoutez le code suivant à validation.ts
curl -fsSL https://deno.land/install.sh | sh
Pour commencer, nous allons importer l'interface Oak Router, Book, createBookSchema et updateBookSchema dans le fichier book.routes.ts :
export interface Book { id: string; title: string; author: string; description: string; }
Ensuite, nous initialiserons la base de données DenoKV et créerons une nouvelle instance de routeur pour gérer les routes HTTP.
export interface CreateBookDTO { title: string; author: string; description: string; }
Ensuite, nous allons créer une fonction d'assistance pour obtenir un livre par son identifiant :
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 prend un tableau avec deux chaînes : l'une représente l'espace de noms "livres" et l'autre représente la clé du livre spécifique en cours de récupération.
Ensuite, définissons le gestionnaire de route pour obtenir un seul livre par identifiant :
import { Router } from "@oak/oak/router"; import type { Book } from "./book.types.ts"; import { createBookSchema, updateBookSchema } from "./validation.ts";
Contrairement à Express, dans Oak, la requête et la réponse sont accessibles à partir de l'objet contextuel, qui possède à la fois les données de requête et les méthodes de réponse, offrant ainsi un moyen simplifié de gérer les interactions HTTP.
Ensuite, ajoutez le gestionnaire d'itinéraire pour obtenir tous les livres :
const kv = await Deno.openKv(); const bookRouter = new Router;
Kv.list récupère toutes les paires clé-valeur qui partagent un préfixe commun (espace de noms).
Ensuite, ajoutez le gestionnaire d'itinéraire pour créer un nouveau livre :
async function getBookById(id: string) { const entry = await kv.get(["books", id]); return entry.value as Book | null; }
Kv.set peut être utilisé pour enregistrer une nouvelle paire clé-valeur dans la base de données, dans ce cas, il prend un tableau (avec deux chaînes ; l'espace de noms et la clé) et la valeur à enregistrer.
Ensuite, ajoutez le gestionnaire d'itinéraire pour mettre à jour un livre par identifiant :
curl -fsSL https://deno.land/install.sh | sh
kv.set peut également être utilisé pour mettre à jour la valeur d'une paire clé-valeur. Dans ce cas, il faut un tableau (avec deux chaînes : l'espace de noms et la clé dont la valeur sera mise à jour) et la nouvelle valeur avec laquelle mettre à jour.
Enfin, ajoutons le gestionnaire d'itinéraire pour supprimer un livre par identifiant :
irm https://deno.land/install.ps1 | iex
kv.delete supprime une paire clé-valeur donnée.
Dans le fichier main.ts ajoutez le code suivant :
curl -fsSL https://deno.land/install.sh | sh
Nous devrons apporter une petite modification à notre deno.json pour exécuter notre application.
export interface Book { id: string; title: string; author: string; description: string; }
Nous avons ajouté l'indicateur --stable-kv car DenoKV est toujours une API instable.
Nous avons également ajouté l'indicateur --allow-net pour accorder à Deno l'accès au réseau.
Une fois cela en place, nous pouvons démarrer notre application en exécutant deno run dev.
Nous sommes arrivés à la fin du post.
Vous pouvez désormais créer une API REST avec Deno Oak et une base de données DenoKV.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!