FastAPI - 使用 GraphQL
Facebook 在 2012 年开发了 GraphQL,这是一种新的 API 标准,旨在优化 RESTful API 调用。 GraphQL 是 API 的数据查询和操作语言。 与 REST 相比,GraphQL 更加灵活、高效和准确。 GraphQL 服务器仅提供一个端点,并以客户端所需的精确数据进行响应。
由于 GraphQL 与 ASGI 兼容,因此可以轻松地与 FastAPI 应用程序集成。 GraphQL 有很多 Python 库。 下面列出了其中一些 −
Strawberry
Ariadne
Tartiflette
Graphene
FastAPI 的官方文档推荐使用 Strawberry 库,因为它的设计也是基于类型注释(就像 FastAPI 本身一样)。
为了将 GraphQL 与 FastAPI 应用程序集成,首先将 Python 类装饰为 Strawberry 类型。
@strawberry.type class Book: title: str author: str price: int
接下来,声明一个包含返回 Book 对象的函数的 Query 类。
@strawberry.type class Query: @strawberry.field def book(self) -> Book: return Book(title="Computer Fundamentals", author="Sinha", price=300)
使用这个Query类作为参数获取Strawberry.Schema对象
schema = strawberry.Schema(query=Query)
然后声明GraphQL类和FastAPI应用类的对象。
graphql_app = GraphQL(schema) app = FastAPI()
最后,将路由添加到 FastAPI 对象并运行服务器。
app.add_route("/book", graphql_app) app.add_websocket_route("/book", graphql_app)
在浏览器中访问 http://localhost:8000/book。 浏览器内的 GraphQL IDE 打开。
在注释部分下方,使用 Graphiql IDE 的资源管理器栏输入以下查询。 运行查询以在输出窗格中显示结果。