为什么我在使用来自 FastAPI 的 APIRouter 时看不到 GraphQL App
Why I do not see GraphQL App when using APIRouter from FastAPI
我不明白,为什么我看不到像this这样的界面
从 FastAPI 使用 APIRouter 时。
我的服务是这样的:
class GraphqlService(graphene.ObjectType):
hello = graphene.String(name=graphene.String(default_value="stranger"))
@staticmethod
def resolve_hello(self, info, name):
return "Hello " + name
并像这样查看:
router = APIRouter()
graphql_app = GraphQLApp(schema=graphene.Schema(query=GraphqlService), executor_class=AsyncioExecutor)
@router.get('/db_article', response_model=Union[Article, ArticleNotFound])
async def db_articles(request):
return await graphql_app.handle_graphql(request)
但是,当我访问 http://localhost:8089/myAPI/v1/db_article 时,
我得到一个错误:{"detail":[{"loc":["query","request"],"msg":"field required","type":"value_error.missing"}]}
你的函数签名中有一个请求参数。如果这应该是进入 FastAPI 的请求,您需要这样输入:
from fastapi import Request
....
async def db_articles(request: Request):
.. 否则 FastAPI 自动假定它是一个查询参数。如果您阅读了链接的示例代码,他们会直接从应用程序而不是通过辅助视图注册路线。
app = FastAPI()
app.add_route("/", GraphQLApp(schema=graphene.Schema(query=Query)))
我不明白,为什么我看不到像this这样的界面 从 FastAPI 使用 APIRouter 时。
我的服务是这样的:
class GraphqlService(graphene.ObjectType):
hello = graphene.String(name=graphene.String(default_value="stranger"))
@staticmethod
def resolve_hello(self, info, name):
return "Hello " + name
并像这样查看:
router = APIRouter()
graphql_app = GraphQLApp(schema=graphene.Schema(query=GraphqlService), executor_class=AsyncioExecutor)
@router.get('/db_article', response_model=Union[Article, ArticleNotFound])
async def db_articles(request):
return await graphql_app.handle_graphql(request)
但是,当我访问 http://localhost:8089/myAPI/v1/db_article 时,
我得到一个错误:{"detail":[{"loc":["query","request"],"msg":"field required","type":"value_error.missing"}]}
你的函数签名中有一个请求参数。如果这应该是进入 FastAPI 的请求,您需要这样输入:
from fastapi import Request
....
async def db_articles(request: Request):
.. 否则 FastAPI 自动假定它是一个查询参数。如果您阅读了链接的示例代码,他们会直接从应用程序而不是通过辅助视图注册路线。
app = FastAPI()
app.add_route("/", GraphQLApp(schema=graphene.Schema(query=Query)))