Python 中的 GraphQL 入门

2025-06-07

Python 中的 GraphQL 入门

现代框架来来去去,有些甚至成为了新的标准。随着React等现代 JavaScript 库的兴起,像 GraphQL API 这样的数据获取新方法也越来越流行。虽然Node.js仍然是基于GraphQL的后端最流行的技术,但还有很多其他选择。

如果您首选 Python,那么您一定非常乐意听到 Django 对GraphQL提供良好的支持。更具体地说, Graphene是一款旨在通过提供用于构建 GraphQL API 的库来简化开发人员工作的产品。在继续之前,让我们先来回顾一下这一切是如何开始的。

需要采取新方法

2010年代初,IT行业面临着新的挑战。移动端使用量的大幅增长,暴露出许多大型社交服务架构的弱点,这些服务的数据结构通常采用图的形式。移动端使用量的大幅增长导致许多性能问题,尤其是在低性能设备和网络不稳定的情况下。开发团队发现,REST 并非解决此类问题的最佳方案。

“适应或死亡”

Facebook 认为这是移动应用性能的关键部分,于是开始研究一种解决方案来满足其新闻推送的数据管理需求,该解决方案后来以 GraphQL 的名称开源。与此同时,其他几家公司也发现了其数据获取模型中存在同样的问题。许多公司在 GraphQL 公开发布后放弃了自己的项目,并决定采用这项伟大的技术。与其他公司不同,Netflix 继续开发自己的 REST 替代方案Falcor,并决定将其开源。

什么是 GraphQL

GraphQL 是一种 API 查询语言。它之所以越来越受欢迎,是因为与 REST 不同,它提供了更智能、更灵活的数据获取方式。

让我们看一个简单的 GraphQL 查询:

query {
  user {
    name
  }
}
Enter fullscreen mode Exit fullscreen mode

以及服务器返回的响应:

{
  "user": {
    "name": "Tomek Poniatowicz",
   }
}
Enter fullscreen mode Exit fullscreen mode

现在想象一下,您正在获取 Facebook 动态的数据,其中包含一个用户、该用户好友的帖子、其他用户对这些帖子的评论等等。需要请求的数据量很大,这可能会导致 REST 中的数据获取过度/不足问题。由于 GraphQL 赋予客户端获取所需数据的能力,因此不会降低速度。在查询中添加新字段也非常简单。

Graphene 的 Django 集成

我们需要安装graphene-django库并将其包含在我们的settings.py文件中

pip install "graphene-django>=2.0"
Enter fullscreen mode Exit fullscreen mode

python 设置

并在 Django 应用中设置 GraphQL 端点

设置 graphql 端点

现在让我们在app/models.py文件中准备一个简单的 Django 数据模型
并在其中定义我们的模式app/schema.py

django数据模型

定义模式

一切就绪。现在您可以查询您的简单架构:

查询简单模式

使用 GraphQL 的主要好处

GraphQL 备受关注, GraphQL 与 REST的争论也层出不穷
使用 GraphQL 的主要优势在于,它在数据获取方面比 REST 更具弹性,从而减少了与服务器的往返次数。GraphQL 消除了数据获取不足和过度的问题。
由于 GraphQL 尚处于早期应用阶段,它还存在一些不足之处(例如缓存),但它的发展势头强劲,正在成为一股不容小觑的力量。

文章来源:https://dev.to/graphqleditor/getting-started-with-graphql-in-python-4mgf
PREV
React + GraphQL 入门
NEXT
React GraphQL 项目的全栈模板