Hono : Le framework web ultrarapide et léger pour tous tes projets JavaScript !

Ben ✨Ben ✨
6 min read

Quand tu développes une API ou une application web, tu cherches une solution à la fois rapide, légère et facile à utiliser. Je te présente Hono. Ce framework, minimaliste et puissant, te permet de construire des applications performantes en un rien de temps. Ce n’est pas juste un autre framework JavaScript, c’est une solution qui allie simplicité et efficacité, tout en exploitant les standards du web.

Ce qui rend Hono spécial 🔥

Voici un tour d’horizon des fonctionnalités qui rendent Hono unique :

  1. Vitesse impressionnante : Hono est conçu pour être ultrarapide. Son routeur, le RegExpRouter, est optimisé pour éviter les boucles linéaires, ce qui permet de traiter les requêtes beaucoup plus rapidement que d'autres frameworks similaires. Il bat même des frameworks bien établis dans des benchmarks de performances, avec des vitesses de traitement exceptionnelles.

  2. Légèreté extrême : Avec une taille inférieure à 14kb pour sa version "tiny", Hono est l'un des frameworks les plus légers que tu puisses utiliser. Cette légèreté le rend idéal pour les applications à grande échelle ou celles qui nécessitent des temps de réponse très rapides. De plus, comme Hono respecte les standards du web et n'a aucune dépendance externe, tu n'es pas encombré par des bibliothèques inutiles.

  3. Support multi-runtime : L'un des aspects les plus intéressants de Hono, c'est qu’il fonctionne partout. Que tu sois sur Node.js, Deno, Bun, ou même sur des environnements spécifiques comme Cloudflare Workers, tu peux écrire ton code une seule fois et l'exécuter sur tous ces environnements sans changement. Cela rend Hono incroyablement polyvalent, surtout si tu déploies sur des architectures serverless.

  4. Middleware intégré : Hono offre un ensemble complet de middlewares intégrés pour gérer des fonctionnalités comme l'authentification (JWT, Basic Auth), la compression, les headers sécurisés, et bien plus encore. Ces middlewares peuvent être utilisés tels quels ou modifiés pour répondre aux besoins spécifiques de ton application. Voici quelques exemples des middlewares que tu peux utiliser avec Hono :

    • CORS : Pour gérer les accès cross-origin à ton API.

    • JWT : Pour ajouter un système d'authentification sécurisé basé sur des tokens.

    • Compression : Réduis la taille des réponses HTTP pour améliorer la vitesse de chargement.

Construire une API simple avec Hono

Passons aux choses sérieuses : comment utiliser Hono dans un projet réel. Voici comment lancer une application API simple avec Hono en quelques étapes.

Étape 1 : Installer Hono

Pour démarrer, lance la commande suivante :

npm create hono@latest

Cela va lancer une petite CLI qui te posera quelques questions pour configurer ton projet Hono. Tu devras choisir des options telles que le nom de ton projet, le gestionnaire de paquets à utiliser, et l'interpréteur. Un conseil ? Si tu n'as pas encore essayé Bun, je te le recommande vivement, c'est un interpréteur JavaScript rapide et moderne. Si tu veux en savoir plus, je te conseille de lire mon article sur Bun ici.

En fonction de tes choix, tu pourras également sélectionner un modèle pour ton projet (template), qui facilite l'upload vers des services en ligne comme Cloudflare Workers ou Deno. Cela fait partie des fonctionnalités pratiques de Hono pour déployer rapidement des applications.

Si tu choisis Bun comme interpréteur, n'oublie pas de l'installer avec cette commande :

curl -fsSL https://bun.sh/install | bash

Une autre question te sera posée :

Do you want to install project dependencies? (Y/n)

Je te conseille de répondre "Y" pour que les dépendances soient automatiquement installées pour toi.

Ensuite, une fois ton projet créé, navigue dans le dossier avec cd nom_de_ton_app et si tu utilises Bun, tu pourras démarrer ton API avec la commande :

bun run dev

Étape 2 : Écrire une API avec plusieurs routes

Voici un exemple d’application simple avec plusieurs routes, intégrant la génération et la vérification de JWT pour des fonctionnalités sécurisées :

import { Hono } from 'hono';
import { jwt } from 'hono/jwt';
import * as jwtSign from 'jsonwebtoken';

const app = new Hono();
// le secret utilisé pour générer le tokent jwt
const secret = 'mon-super-secret';

// Middleware d'authentification JWT
app.use('/protected/*', jwt({ secret }));

// Route sécurisée
app.get('/protected/dashboard', (c) => {
  return c.json({ message: 'Bienvenue dans ton dashboard sécurisé !' });
});

// Route GET simple qui renvoie un message texte
app.get('/', (c) => c.text('Bienvenue sur mon API avec Hono!'));

// Route avec paramètre dynamique
app.get('/user/:name', (c) => {
  const name = c.req.param('name');
  return c.text(`Salut, ${name}! Bienvenue sur Hono.`);
});

// Route POST pour générer un JWT
app.post('/login', async (c) => {
  const { username, password } = await c.req.json();
  // Ajouter ici une logique de validation des utilisateurs (ex: vérifier username/password)

  // Génère un token JWT valide
  const token = jwtSign.sign({ username }, secret, { expiresIn: '1h' });

  return c.json({ message: `Login réussi pour ${username}`, token });
});

export default app;

Explication du code :

  • Middleware JWT : Utilisé sur les routes commençant par /protected, ce middleware s'assure que seuls les utilisateurs munis d’un token JWT valide peuvent accéder à ces routes protégées.

  • Génération de token JWT : Lorsqu’un utilisateur se connecte via la route /login, un token JWT est généré et envoyé dans la réponse. Ce token contient l’identifiant de l’utilisateur et a une durée de validité d'une heure (expiresIn: '1h').

  • Routes GET simples : Une route avec un paramètre dynamique (/user/:name) montre comment récupérer des données depuis l'URL.

Étape 3 : Lancer l’application

Pour exécuter ton application localement avec Bun ou Node.js, utilise cette commande :

bun run dev

Tester l'API avec des requêtes curl

Tu peux tester les routes principales de ton API avec des commandes curl.

  • Tester la connexion et obtenir un token JWT :

      curl -X POST http://localhost:3000/login -H "Content-Type: application/json" -d '{"username":"John", "password":"1234"}'
    

    Réponse attendue (avec un token JWT) :

      {
        "message": "Login réussi pour John",
        "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
      }
    
  • Accéder à une route protégée avec le JWT :

    Utilise le token reçu dans l'étape précédente pour accéder à la route protégée :

      curl http://localhost:3000/protected/dashboard -H "Authorization: Bearer [TON_JWT_TOKEN]"
    

    Réponse attendue :

      {
        "message": "Bienvenue dans ton dashboard sécurisé !"
      }
    

Pourquoi utiliser Hono ?

Hono est l'outil parfait si tu cherches un framework qui allie rapidité, légèreté et simplicité sans faire de compromis sur les fonctionnalités. Son écosystème de middleware intégré, sa compatibilité multi-runtime, et sa prise en charge native de TypeScript en font un choix idéal pour tout projet d’API ou d’application web. Que tu construises des API REST, des services backend ou des applications serverless, Hono te permet de le faire de manière efficace et intuitive.

Tu veux en savoir plus ? Rendez-vous sur la documentation officielle de Hono pour plonger encore plus profondément dans ce fantastique framework.

0
Subscribe to my newsletter

Read articles from Ben ✨ directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Ben ✨
Ben ✨

Développeur web français, passionné d'innovation digitale. Je crée des applis innovantes et partage mes astuces sur les solutions opensource.