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.
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 :
- Strawberry 🍓
- Ariadne
- Tartiflette
- Avec Tartiflette ASGI pour fournir l'intégration ASGI
- Graphene
- Avec starlette-graphene3
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.