FastAPI 使用GraphQL

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

接下来,声明一个 Query 类,包含一个返回Book对象的函数。

@strawberry.type
class Query:
   @strawberry.field
   def book(self) -> Book:
   return Book(title="Computer Fundamentals", author="Sinha", price=300)

使用这个查询类作为参数来获得 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就会打开。

FastAPI - 使用GraphQL

在注释部分下面,使用Graphiql IDE的资源管理器栏输入以下查询。运行该查询,在输出窗格中显示结果。

FastAPI - 使用GraphQL

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程