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.
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 fĂŒr ASGI-Integration
- Graphene
GraphQL mit Strawberry¶
Wenn Sie mit GraphQL arbeiten möchten oder mĂŒssen, ist Strawberry die empfohlene Bibliothek, da deren Design FastAPIs Design 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:
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")
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 deprecatet, 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.
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.