Zum Inhalt

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:

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.