1. 概述和设置
5m

欢迎来到你的 GraphQL 旅程的起点!

什么是? GraphQL 是一种开发者友好的语言,适用于现代网络。它改变了应用程序从 API 获取数据的方式,使你能够通过单个查询获取所需的确切数据。

以强类型 Schema 为核心, 帮助你定义跨越任意数量系统的数据之间的关系,使你能够专注于 你的数据能做什么 而不是存储位置。

在整个课程中,我们将学习 如何融入我们的现有架构,以及它如何与现有的 REST API 和其他 配合使用。我们将学习如何使用查询、、Schema 和 在我们的 GraphQL API 中。

A diagram showing GraphQL as the contact point between multiple clients and the complex architecture of a modern backend

我们将使用 构建一个 Strawberry,一个使用类型注释构建 API 的 Python 库。

在本课中,我们将

  • 了解我们正在构建的内容
  • 设置我们的项目环境

先决条件

本课程使用 Python 和 Strawberry。你应该熟悉 Python 并将其安装在你的机器上。我们建议使用最新版本的 Python。

我们还建议熟悉 如何使用 REST API 和 HTTP 请求 的基础知识。

我们正在构建的内容

倾听!准备好 收听 我们在本课程中构建的内容吗? 敲鼓声🥁

正如你从所有这些与音乐相关的提示中可以看出,我们正在构建一个名为 MusicMatcher 的音乐目录 API,它可以帮助我们为合适的时刻找到合适的配乐。

Mockup of MusicMatcher

对于 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 StatReload
INFO: 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 等。

关键要点

  • 使你能够通过单个 精确地检索数据,无需在客户端应用程序端导航多个 REST 端点。
  • Strawberry 是一个使用类型注释构建 API 的 Python 库。

接下来

让我们深入了解所有 内容。在下一课中,我们将详细了解 GraphQL 如何融入我们的现有架构,以及构成 的确切内容。

下一步

分享你关于本课的问题和评论

本课程目前处于

测试版
.你的反馈有助于我们改进!如果你遇到困难或困惑,请告诉我们,我们会帮助你。所有评论都是公开的,必须遵守 Apollo 行为准则。请注意,已解决或已处理的评论可能会被删除。

你需要一个 GitHub 帐户才能在下方发帖。没有帐户? 改在我们的奥德赛论坛发帖。