3.6 KiB
GraphQL
Da FastAPI auf dem ASGI-Standard basiert, ist es sehr einfach, jede GraphQL-Bibliothek zu integrieren, die auch mit ASGI kompatibel ist.
Sie können normale FastAPI-Pfadoperationen mit GraphQL in derselben Anwendung kombinieren.
/// tip | Tipp
GraphQL löst einige sehr spezifische Anwendungsfälle.
Es hat Vorteile und Nachteile im Vergleich zu gängigen Web-APIs.
Stellen Sie sicher, dass Sie prüfen, ob die Vorteile für Ihren Anwendungsfall die Nachteile ausgleichen. 🤓
///
GraphQL-Bibliotheken
Hier sind einige der GraphQL-Bibliotheken, die ASGI-Unterstützung haben. Sie könnten sie mit FastAPI verwenden:
- Strawberry 🍓
- Ariadne
- Tartiflette
- Mit Tartiflette ASGI zur Bereitstellung der ASGI-Integration
- Graphene
GraphQL mit Strawberry
Wenn Sie mit GraphQL arbeiten möchten oder müssen, ist Strawberry die empfohlene Bibliothek, da deren Design dem Design von FastAPI am nächsten kommt und alles auf Typannotationen basiert.
Abhängig von Ihrem Anwendungsfall könnten Sie eine andere Bibliothek vorziehen, aber wenn Sie mich fragen würden, würde ich Ihnen wahrscheinlich empfehlen, Strawberry auszuprobieren.
Hier ist eine kleine Vorschau, wie Sie Strawberry mit FastAPI integrieren können:
{* ../../docs_src/graphql/tutorial001.py hl[3,22,25] *}
Weitere Informationen zu Strawberry finden Sie in der Strawberry-Dokumentation.
Und auch in der Dokumentation zu Strawberry mit FastAPI.
Ältere GraphQLApp
von Starlette
Frühere Versionen von Starlette enthielten eine GraphQLApp
-Klasse zur Integration mit Graphene.
Das wurde von Starlette deprecated, aber wenn Sie Code haben, der das verwendet, können Sie einfach zu starlette-graphene3 migrieren, das denselben Anwendungsfall abdeckt und eine fast identische Schnittstelle hat.
/// tip | Tipp
Wenn Sie GraphQL benötigen, würde ich Ihnen trotzdem empfehlen, sich Strawberry anzuschauen, da es auf Typannotationen basiert, statt auf benutzerdefinierten Klassen und Typen.
///
Mehr darüber lernen
Weitere Informationen zu GraphQL finden Sie in der offiziellen GraphQL-Dokumentation.
Sie können auch mehr über jede der oben beschriebenen Bibliotheken in den jeweiligen Links lesen.