Aller au contenu

GraphQL

🌐 Traduction par IA et humains

Cette traduction a été réalisée par une IA guidée par des humains. 🤝

Elle peut contenir des erreurs d'interprétation du sens original, ou paraître peu naturelle, etc. 🤖

Vous pouvez améliorer cette traduction en nous aidant à mieux guider le LLM d'IA.

Version anglaise

Comme FastAPI est basé sur la norme ASGI, il est très facile d'intégrer toute bibliothèque GraphQL également compatible avec ASGI.

Vous pouvez combiner des chemins d'accès FastAPI classiques avec GraphQL dans la même application.

Astuce

GraphQL résout des cas d'utilisation très spécifiques.

Il présente des avantages et des inconvénients par rapport aux API web classiques.

Assurez-vous d'évaluer si les bénéfices pour votre cas d'utilisation compensent les inconvénients. 🤓

Bibliothèques GraphQL

Voici quelques bibliothèques GraphQL qui prennent en charge ASGI. Vous pouvez les utiliser avec FastAPI :

GraphQL avec Strawberry

Si vous avez besoin ou souhaitez travailler avec GraphQL, Strawberry est la bibliothèque recommandée car sa conception est la plus proche de celle de FastAPI, tout est basé sur des annotations de type.

Selon votre cas d'utilisation, vous pourriez préférer une autre bibliothèque, mais si vous me le demandiez, je vous suggérerais probablement d'essayer Strawberry.

Voici un petit aperçu de la manière dont vous pouvez intégrer Strawberry avec FastAPI :

import strawberry
from fastapi import FastAPI
from strawberry.fastapi import GraphQLRouter


@strawberry.type
class User:
    name: str
    age: int


@strawberry.type
class Query:
    @strawberry.field
    def user(self) -> User:
        return User(name="Patrick", age=100)


schema = strawberry.Schema(query=Query)


graphql_app = GraphQLRouter(schema)

app = FastAPI()
app.include_router(graphql_app, prefix="/graphql")

Vous pouvez en apprendre davantage sur Strawberry dans la documentation de Strawberry.

Et également la documentation sur Strawberry avec FastAPI.

Ancien GraphQLApp de Starlette

Les versions précédentes de Starlette incluaient une classe GraphQLApp pour s'intégrer à Graphene.

Elle a été dépréciée dans Starlette, mais si vous avez du code qui l'utilisait, vous pouvez facilement migrer vers starlette-graphene3, qui couvre le même cas d'utilisation et propose une interface presque identique.

Astuce

Si vous avez besoin de GraphQL, je vous recommande tout de même de regarder Strawberry, car il est basé sur des annotations de type plutôt que sur des classes et types personnalisés.

En savoir plus

Vous pouvez en apprendre davantage sur GraphQL dans la documentation officielle de GraphQL.

Vous pouvez également en lire davantage sur chacune des bibliothèques décrites ci-dessus via leurs liens.