欢迎来到你的 GraphQL 旅程的起点!
什么是GraphQL? GraphQL 是一种开发者友好的查询语言,适用于现代网络。它改变了应用程序从 API 获取数据的方式,使你能够通过单个查询获取所需的确切数据。
以强类型 Schema 为核心,GraphQL 帮助你定义跨越任意数量系统的数据之间的关系,使你能够专注于 你的数据能做什么 而不是存储位置。
在整个课程中,我们将学习 GraphQL 如何融入我们的现有架构,以及它如何与现有的 REST API 和其他 数据源 配合使用。我们将学习如何使用查询、mutation、参数、Schema 和 解析器 在我们的 GraphQL API 中。
我们将使用 GraphQL 服务器 构建一个 Strawberry,一个使用类型注释构建 GraphQL API 的 Python 库。
在本课中,我们将
- 了解我们正在构建的内容
- 设置我们的项目环境
先决条件
本课程使用 Python 和 Strawberry。你应该熟悉 Python 并将其安装在你的机器上。我们建议使用最新版本的 Python。
我们还建议熟悉 如何使用 REST API 和 HTTP 请求 的基础知识。
我们正在构建的内容
倾听!准备好 收听 我们在本课程中构建的内容吗? 敲鼓声 请 🥁
正如你从所有这些与音乐相关的提示中可以看出,我们正在构建一个名为 MusicMatcher 的音乐目录 API,它可以帮助我们为合适的时刻找到合适的配乐。
对于 MusicMatcher 的第一个版本,我们将专注于播放列表:展示特色播放列表、列出播放列表的曲目以及添加曲目。在未来的课程中,我们将添加更多功能,例如分页、身份验证、中间 Schema 设计概念和联合。
项目设置
要跟随本课程进行学习,你需要以下内容
代码编辑器或 IDE
我们将使用 VS Code,但你可以随意使用你喜欢的 Python 开发编辑器或 IDE!
安装 Python
我们在这门课程中使用 Python 3.12。虽然 Strawberry 支持 Python 3.8+,但我们建议使用最新版本的 Python 以获得最佳体验。 在此处找到你的下载链接。
将仓库克隆到本地
项目仓库是一个运行 Strawberry 和 FastAPI 的最小模板。它还在 README 中包含一些关于如何开始运行的额外说明。
git clone https://github.com/apollographql-education/odyssey-intro-strawberry
以下是项目的结构
📦 odyssey-intro-strawberry┣ 📂 api┃ ┣ 📂 types┃ ┃ ┗ 📄 __init__.py┃ ┗ 📄 __init__.py┣ 📂 data┃ ┗ 📄 openapi.json┣ 📄 main.py┣ 📄 pyproject.toml┣ 📄 README.md┣ 📄 requirements-dev.txt┗ 📄 requirements.txt
在安装依赖项之前,让我们设置一个虚拟环境,以将我们的项目依赖项与其他项目隔离。
python -m venv .venv
此命令会在你的项目文件夹中创建一个 .venv
目录。要激活虚拟环境,请运行:
source .venv/bin/activate
.venv\Scripts\activate
安装依赖项并运行服务器
运行以下命令以安装依赖项。
pip install -r requirements.txt -r requirements-dev.txt
最后,让我们运行项目。
uvicorn main:app --reload
注意:uvicorn
是一个 ASGI 服务器实现,使用 uvloop 和 httptools。你可以了解更多信息 这里。
在终端中,你应该看到输出日志
INFO: Will watch for changes in these directories: ['/🐍/odyssey-intro-strawberry']INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)INFO: Started reloader process [54074] using StatReloadINFO: Started server process [54092]INFO: Waiting for application startup.INFO: Application startup complete.
项目将在 https://127.0.0.1:8000 上运行。
FastAPI 和 Strawberry
在本课程中,我们将使用 FastAPI,但 Strawberry 支持许多其他 Python Web 框架,包括 Django、Flask 等。
关键要点
- GraphQL 使你能够通过单个 查询 精确地检索数据,无需在客户端应用程序端导航多个 REST 端点。
- Strawberry 是一个使用类型注释构建 GraphQL API 的 Python 库。
接下来
让我们深入了解所有 GraphQL 内容。在下一课中,我们将详细了解 GraphQL 如何融入我们的现有架构,以及构成 GraphQL 服务器 的确切内容。
分享你关于本课的问题和评论
本课程目前处于
你需要一个 GitHub 帐户才能在下方发帖。没有帐户? 改在我们的奥德赛论坛发帖。