Fastapi + 草莓 GraphQL

Fastapi + Strawberry GraphQL

我目前正在使用 fastapi 构建微服务。

我想通过 graphql 在另一条路线上公开我的基础数据。 来自 starlette 的直接集成已被弃用,因此我尝试使用推荐的软件包之一 strawberry。 目前看来无法与grapqhl结合使用

例子

my_grapqhql.py

from typing import List
import strawberry

@strawberry.type
class Book:
    title: str
    author: str

@strawberry.type
class Query:
    books: List[Book]

schema = strawberry.Schema(query=Query)

我试过的

在fastapi文档中,asgi组件是这样添加的:

main.py

from fastapi import FastAPI
from strawberry.asgi import GraphQL
from .my_graphql.py import schema

app = FastAPI()
app.add_middleware(GraphQL, schema=schema)

不幸的是,这不起作用:

TypeError: __init__() got an unexpected keyword argument 'app'

当我切换最后一行以挂载模块时至少开始:

app.mount("/graphql", GraphQL(schema))

但是路由没有加载。

我很快就会记录下来:https://github.com/strawberry-graphql/strawberry/pull/1043

要使用 Strawberry 和 FastAPI,您可以执行以下操作:

from fastapi import FastAPI
from strawberry.asgi import GraphQL
from api.schema import Schema

graphql_app = GraphQL(schema)

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