You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.6 KiB

GraphQL

由于 FastAPI 基于 ASGI 标准,因此很容易集成任何也兼容 ASGI 的 GraphQL 库。

你可以在同一个应用中将常规的 FastAPI 路径操作与 GraphQL 结合使用。

/// tip | 提示

GraphQL 解决一些非常特定的用例。

与常见的 Web API 相比,它有各自的优点缺点

请确保评估在你的用例中,这些好处是否足以弥补这些缺点🤓

///

GraphQL 库

以下是一些支持 ASGIGraphQL 库。你可以将它们与 FastAPI 一起使用:

使用 Strawberry 的 GraphQL

如果你需要或想要使用 GraphQLStrawberry推荐的库,因为它的设计与 FastAPI 最为接近,全部基于类型注解

根据你的用例,你可能会更喜欢其他库,但如果你问我,我大概率会建议你先试试 Strawberry

下面是一个将 Strawberry 与 FastAPI 集成的小预览:

{* ../../docs_src/graphql_/tutorial001_py310.py hl[3,22,25] *}

你可以在 Strawberry 文档 中了解更多信息。

还有关于 将 Strawberry 与 FastAPI 结合使用 的文档。

Starlette 中较早的 GraphQLApp

早期版本的 Starlette 包含一个 GraphQLApp 类,用于与 Graphene 集成。

它已在 Starlette 中被弃用,但如果你的代码使用了它,你可以轻松迁移starlette-graphene3,它覆盖相同的用例,且接口几乎完全一致

/// tip | 提示

如果你需要 GraphQL,我仍然建议看看 Strawberry,因为它基于类型注解而不是自定义类和类型。

///

了解更多

你可以在 GraphQL 官方文档 中了解更多关于 GraphQL 的内容。

你也可以通过上面的链接阅读各个库的更多信息。