Fastapi 简明教程
FastAPI - Using 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
接下来,声明一个 Query 类,其中包含一个返回 Book 对象的函数。
@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)
在浏览器中访问 [role="bare"] [role="bare"]http://localhost:8000/book 。一个内置浏览器的 GraphQL IDE 将被打开。
在注释部分的下面,使用 Graphiql IDE 的 Explorer 栏输入以下查询。运行查询以在输出窗格中显示结果。