【问题标题】:Fastapi + Strawberry GraphQLFastapi + 草莓 GraphQL
【发布时间】:2021-09-23 15:47:42
【问题描述】:

我目前正在使用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))

但是路由没有加载。

【问题讨论】:

    标签: python graphql fastapi strawberry-graphql


    【解决方案1】:

    这将很快记录在案: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)
    

    【讨论】:

      猜你喜欢
      • 2014-11-20
      • 2021-10-09
      • 1970-01-01
      • 2021-09-06
      • 2011-12-14
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      相关资源
      最近更新 更多