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。