概述
我们对如何GraphQL的工作原理有了更好的理解;现在是时候去实现它了!
草莓
GraphQL本身是一个规范,一个 查询用于 API 的语言。为了在服务器中实现 GraphQL,我们通常会使用 GraphQL 框架。
例如,如果您是 JavaScript/TypeScript 开发人员,您可能会使用Apollo Server。
在 Python 生态系统中,我们可以使用 草莓,一个由草莓团队开发和维护的 GraphQL库。以下是他们介绍自己的方式:
草莓是一个开发者友好的 GraphQL用于 Python 的库,专为现代开发而设计。
使用 FastAPI 设置草莓
从您的项目目录中打开一个新的终端。让我们使用 pip 安装草莓。
pip install strawberry-graphql
注意: 确保您已激活第一课中创建的 .venv
虚拟环境。
接下来,打开 main.py
在仓库的根目录中。目前,它被设置为从服务器运行的根目录返回一个简单的 "Hello, world!" 消息(默认情况下是 https://127.0.0.1:8000)。
from fastapi import FastAPIapp = FastAPI()@app.get("/")async def hello_world():return {"message": "Hello World"}
让我们用一个 GraphQL端点替换它,使用 Strawberry 的 GraphQLRouter
与 FastAPI。
首先,我们将在 main.py
的顶部导入该包。
from strawberry.fastapi import GraphQLRouter
该 GraphQLRouter
是一个 FastAPI 路由器 它充当一个 GraphQL端点。它接收一个模式、一个路径,以及可选的 GraphQL IDE。
让我们在 app
的初始化下方创建一个 GraphQLRouter
的实例。
graphql_router = GraphQLRouter(..., path="/", graphql_ide="apollo-sandbox")
我们将使用 ...
作为我们将在下一课中定义的模式的占位符。
我们还将路径设置为根目录 /
以及 GraphQL IDE 为 apollo-sandbox
。我们将在课程的后面学习 Sandbox。
最后,我们将包含 graphql_router
在我们的 FastAPI 应用程序中使用 app.include_router
。
app.include_router(graphql_router)
我们也应该删除 hello_world
路由;我们不再需要它。
- @app.get("/")- async def hello_world():- return {"message": "Hello World"}
关键要点
- 草莓是一个 Python 库,用于使用类型注释构建 GraphQL API。
- 草莓提供了与 FastAPI 的集成,它充当 GraphQL端点。
接下来
我们的 GraphQL 服务器处于待机状态,等待模式。我们将在下一课中满足它的需求!
分享您关于这节课的问题和评论
本课程目前处于
您需要一个 GitHub 帐户才能在下方发布。还没有帐户? 请在我们的奥德赛论坛中发布。