Aller au contenu

Pylon ​

Créer une API GraphQL avec Pylon est simple et direct. Pylon est un framework backend construit sur Hono qui permet de développer une API GraphQL à partir du code.

Le schéma GraphQL est généré en temps réel à partir de vos définitions TypeScript, ce qui vous permet de vous concentrer sur la logique de votre service. Cette approche accélère sensiblement le développement, renforce la sûreté des types et réduit les erreurs.

Toute modification incompatible de votre code est immédiatement reflétée dans l’API, afin que vous puissiez voir sans attendre son effet sur le fonctionnement de celle-ci.

Consultez Pylon pour en savoir plus.

Configurer un nouveau service Pylon ​

Pylon permet de créer un service avec la commande npm create pylon. Celle-ci crée un nouveau projet Pylon avec une structure et une configuration de base. Pendant la configuration, vous pouvez choisir votre environnement d’exécution préféré, par exemple Bun, Node.js ou Cloudflare Workers.

Ce guide utilise l’environnement d’exécution Bun.

Créer un projet ​

Pour créer un projet Pylon, exécutez la commande suivante :

bash
npm create pylon my-pylon@latest

Cela crée un répertoire nommé my-pylon contenant la structure de base d’un projet Pylon.

Structure du projet ​

Les projets Pylon sont organisés comme suit :

my-pylon/
├── .pylon/
├── src/
│   ├── index.ts
├── package.json
├── tsconfig.json
  • .pylon/ : contient la compilation de production de votre projet.
  • src/ : contient le code source de votre projet.
  • src/index.ts : le point d’entrée de votre service Pylon.
  • package.json : le fichier de configuration du paquet npm.
  • tsconfig.json : le fichier de configuration TypeScript.

Exemple de base ​

Voici un exemple de service Pylon de base :

ts
import { app } from '@getcronit/pylon'

export const graphql = {
  Query: {
    sum: (a: number, b: number) => a + b,
  },
  Mutation: {
    divide: (a: number, b: number) => a / b,
  },
}

export default app

Sécuriser l’API ​

Pylon s’intègre à ZITADEL, une solution de gestion des identités et des accès conçue pour le cloud, afin d’assurer l’authentification et l’autorisation de vos API. Vous pouvez facilement sécuriser votre API Pylon en suivant les étapes de la documentation ZITADEL.

Créer une API plus complexe ​

Pylon permet de créer des API plus complexes grâce à la génération de schéma en temps réel. Pour connaître les types TypeScript pris en charge et savoir comment définir votre API, consultez la documentation Pylon

Cet exemple montre comment définir des types et des services complexes dans Pylon. Les classes et les méthodes TypeScript permettent de créer des API puissantes qui interagissent avec des bases de données, des services externes et d’autres ressources.

ts
import { app } from '@getcronit/pylon'

class Post {
  id: string
  title: string

  constructor(id: string, title: string) {
    this.id = id
    this.title = title
  }
}

class User {
  id: string
  name: string

  constructor(id: string, name: string) {
    this.id = id
    this.name = name
  }

  static async getById(id: string): Promise<User> {
    // Fetch user data from the database
    return new User(id, 'John Doe')
  }

  async posts(): Promise<Post[]> {
    // Fetch posts for this user from the database
    return [new Post('1', 'Hello, world!')]
  }

  async $createPost(title: string, content: string): Promise<Post> {
    // Create a new post for this user in the database
    return new Post('2', title)
  }
}

export const graphql = {
  Query: {
    user: User.getById,
  },
  Mutation: {
    createPost: (userId: string, title: string, content: string) => {
      const user = User.getById(userId)
      return user.$createPost(title, content)
    },
  },
}

export default app

Appeler l’API ​

L’API Pylon peut être appelée avec toute bibliothèque cliente GraphQL. Pour le développement, il est recommandé d’utiliser Pylon Playground, un IDE GraphQL dans le navigateur qui permet d’interagir avec l’API en temps réel.

  1. Démarrez le serveur Pylon en exécutant bun run dev dans le répertoire de votre projet.
  2. Ouvrez Pylon Playground dans votre navigateur à l’adresse http://localhost:3000/graphql.
  3. Écrivez votre requête ou mutation GraphQL dans le panneau de gauche.

Accéder au contexte Hono ​

Vous pouvez accéder au contexte Hono partout dans votre code à l’aide de la fonction getContext. Elle renvoie l’objet de contexte courant, qui contient des informations sur la requête, la réponse et d’autres données propres au contexte.

ts
import { app, getContext } from '@getcronit/pylon'

export const graphql = {
  Query: {
    hello: () => {
      const context = getContext()
      return `Hello, ${context.req.headers.get('user-agent')}`
    },
  },
}

export default app

Pour en savoir plus sur l’objet de contexte Hono et ses propriétés, consultez la documentation Hono et la documentation Pylon.

Quel est le rôle de Hono ? ​

Pylon repose sur Hono, un framework web léger pour créer des applications web et des API. Hono fournit les fonctions essentielles de traitement des requêtes et réponses HTTP, tandis que Pylon les étend pour le développement d’API GraphQL.

Outre GraphQL, Pylon donne accès à l’instance Hono sous-jacente pour ajouter des routes et des middlewares personnalisés. Vous pouvez ainsi créer des API et services plus complexes qui exploitent toutes les capacités de Hono.

ts
import { app } from '@getcronit/pylon'

export const graphql = {
  Query: {
    sum: (a: number, b: number) => a + b,
  },
  Mutation: {
    divide: (a: number, b: number) => a / b,
  },
}

// Add a custom route to the Pylon app
app.get('/hello', (ctx, next) => {
  return new Response('Hello, world!')
})

Conclusion ​

Pylon est un framework web puissant qui simplifie le développement d’API GraphQL. À partir des définitions de types TypeScript, il génère le schéma en temps réel, renforce la sûreté des types et réduit les erreurs. Avec Pylon, vous pouvez créer rapidement des API sécurisées et évolutives adaptées aux besoins de votre activité. Son intégration à Hono vous permet d’utiliser toutes les fonctionnalités de Hono en vous concentrant sur le développement GraphQL.

Pour en savoir plus sur Pylon, consultez la documentation officielle.

Voir aussi ​

Publié sous licence MIT.