FastAPI 之 GraphQL#

参考:GraphQL

因为 FastAPI 是基于 ASGI 标准的,所以集成任何与 ASGI 兼容的 GraphQL 库都非常容易。

在同一个应用程序中,可以将普通的 FastAPI 路径操作与 GraphQL 结合使用。

小技巧

  • GraphQL解决了一些非常具体的用例。

  • 与普通 web API 相比,它有优点也有缺点。

  • 确保您评估了用例的好处是否弥补了缺点。🤓

FastAPI:GraphQL + Strawberry#

如果你需要或者想要使用 GraphQL, Strawberry 是推荐的库,因为它的设计最接近 FastAPI 的设计,它都是基于类型注释的。

下面是关于如何将 Strawberry 与 FastAPI 集成的小样例:

import strawberry
from fastapi import FastAPI
from strawberry.asgi import GraphQL


@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 = GraphQL(schema)

app = FastAPI()
app.add_route("/graphql", graphql_app)
app.add_websocket_route("/graphql", graphql_app)

更多样例可以参考:strawberry-fastapi