FastAPI - 使用GraphQL



Facebook于2012年开发了GraphQL,这是一种新的API标准,旨在优化RESTful API调用。GraphQL是API的数据查询和操作语言。与REST相比,GraphQL更灵活、更高效、更准确。GraphQL服务器只提供单个端点,并返回客户端所需的确切数据。

由于GraphQL与ASGI兼容,因此可以轻松地将其集成到FastAPI应用程序中。有很多Python库可用于GraphQL。其中一些列在下面:

  • 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)

在浏览器中访问https://127.0.0.1:8000/book。将打开一个浏览器内GraphQL IDE。

FastAPI Using GraphQL

在注释部分下方,使用Graphiql IDE的Explorer栏输入以下查询。运行查询以在输出窗格中显示结果。

FastAPI Using GraphQL
广告