Fastapi + 草莓 GraphQL

Posted

技术标签:

【中文标题】Fastapi + 草莓 GraphQL【英文标题】:Fastapi + Strawberry 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))

但是路由没有加载。

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于Fastapi + 草莓 GraphQL的主要内容,如果未能解决你的问题,请参考以下文章

草莓大王PK人工智能,谁是C位?

草莓熊python turtle绘图代码(玫瑰花版)附源代码

草莓熊python turtle绘图代码

基于K-means聚类算法的草莓灌溉策略研究

解决方案环境监控技术提升温室种植草莓的口感产量品质

iPhone草莓视频怎么删除描述文件IOS系统