3.8 KiB
GraphQL
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.
/// tip | 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 :
{* ../../docs_src/graphql_/tutorial001_py310.py hl[3,22,25] *}
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.
/// tip | 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.