Maison > interface Web > js tutoriel > Guide pour créer une API REST avec Deno et Oak Framework

Guide pour créer une API REST avec Deno et Oak Framework

Susan Sarandon
Libérer: 2024-11-03 10:34:02
original
604 Les gens l'ont consulté

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.

Qu’est-ce que Déno ?

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 :

  • Une bibliothèque standard intégrée, éliminant le besoin de nombreux packages tiers
  • Un système de modules moderne, prenant directement en charge les importations basées sur des URL
  • Une CLI améliorée avec des outils intégrés pour le formatage, le peluchage et les tests
  • Une expérience JavaScript cohérente avec les modules ES au lieu de CommonJS.

Qu'est-ce que le chêne

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.

Qu'est-ce que DenoKV

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.

Configuration du projet

Installer Deno

curl -fsSL https://deno.land/install.sh | sh
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Pour macOS : utilisation de Shell

irm https://deno.land/install.ps1 | iex
Copier après la connexion
Copier après la connexion
Copier après la connexion

Pour Windows : utiliser PowerShell

curl -fsSL https://deno.land/install.sh | sh
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Pour Linux : utilisation de Shell
Pour tester votre installation, exécutez deno -version.

Guide to Building a REST API with Deno and Oak Framework

Créer un nouveau projet

Exécutez la commande deno init deno-oak-demo pour créer un nouveau projet appelé deno-oak-demo, puis cd-y

Guide to Building a REST API with Deno and Oak Framework

Ensuite, vous devrez créer 4 nouveaux fichiers dans le répertoire deno-oak-demo :

  • livre.routes.ts
  • livre.dto.ts
  • livre.types.ts
  • Et validation.ts

Votre répertoire deno-oak-demo devrait maintenant ressembler à ceci
Guide to Building a REST API with Deno and Oak Framework

Installer l'extension Deno VSCode

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.

Guide to Building a REST API with Deno and Oak Framework

Installer du chêne

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

Guide to Building a REST API with Deno and Oak Framework

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.

Définition des types et des DTO

Dans le fichier book.types.ts ajoutez le code suivant

curl -fsSL https://deno.land/install.sh | sh
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Et dans le fichier book.dto.ts ajoutez ceci

irm https://deno.land/install.ps1 | iex
Copier après la connexion
Copier après la connexion
Copier après la connexion

Validation de la demande

Ajoutez le code suivant à validation.ts

curl -fsSL https://deno.land/install.sh | sh
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Configurer le routeur de livres

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;
}
Copier après la connexion
Copier après la connexion

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;
}
Copier après la connexion

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(),
});
Copier après la connexion

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";
Copier après la connexion

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;
Copier après la connexion

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;
}
Copier après la connexion

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
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

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
Copier après la connexion
Copier après la connexion
Copier après la connexion

kv.delete supprime une paire clé-valeur donnée.

Initialiser l'application Oak

Dans le fichier main.ts ajoutez le code suivant :

curl -fsSL https://deno.land/install.sh | sh
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Exécuter l'application

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;
}
Copier après la connexion
Copier après la connexion

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.

Conclusion

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal