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的主要内容,如果未能解决你的问题,请参考以下文章