【问题标题】:Why relay in graphene-django?为什么在graphene-django中中继?
【发布时间】:2019-01-13 00:11:03
【问题描述】:

我想知道为什么 Relay 规范在 graphene-django 中?我知道在 graphene-django 中使用中继我们默认获得分页和过滤器。

我的要求是从 React 调用 graphql apis(用于 Web)并使用 Apollo 客户端用于 Android 和 iOS。

  1. 客户端使用使用graphene-django 编写的graphql api 是否会出现问题,该api 具有Relay 兼容,尤其是分页(和游标)功能?

  2. 如何使用graphene-django支持订阅?

任何帮助将不胜感激。

【问题讨论】:

  • @RajKrishan 您的问题实际上是两个独立的问题,它们必须分开。第一个问题根本不是石墨烯python特有的。

标签: django graphql graphene-python


【解决方案1】:

Relay 是 React 和任何 GraphQL 服务器之间的客户端中间件。 graphene-django 提供的 Relay Specs 只是让使用 graphene-django 更容易。它们不是绝对必要的

  1. 客户端使用使用graphene-django编写的graphql api应该没有问题

  2. 订阅由单独的包处理 - graphene-django-subscriptions

【讨论】:

  • 感谢您的回复。只是再澄清几句。 “它们不是绝对必要的” - 如何在 graphene-django 中不使用中继的情况下实现分页?此外,“客户端使用使用 graphene-django 编写的 graphql api 应该没有问题” - 在 graphene-django 中实现了 Relay?。
  • Relay Specs 对于使用 graphene-django 作为 GraphQL 服务器不是必需的。它们只是为了让使用 Relay 更容易/更快。结果的分页由 graphene-django 提供。 in graphene-django 未实现中继。 Relay 在客户端(在浏览器中)运行,并在 React 和任何 GraphQL 服务器(graphene-django 提供)之间提供了一座桥梁。数据分页由 graphene-django 提供。 UI 分页由您在 React 中提供。同样,Relay 只是两者之间的桥梁。
  • 但是 Relay 作为 graphene 包中的一个模块存在,并添加了很多功能,例如分页和过滤器。此外,还有一些缺点——例如模型中“id”字段的阴影。问题“我们可以在不使用中继的情况下快速实现分页吗?”到目前为止,这是一个悬而未决的问题。
  • @Psion 据我所知,只有graphene_django_extras包提供了简单且独立于Relay Server Spec的实现。但是我非常不鼓励你使用这个包——它有很多奇怪的行为和难以调整默认逻辑的地方。可能,仅使用中继支持将是最好的解决方案。
【解决方案2】:
  1. 使用符合 Relay 的 graphene-django API 没有任何问题。我的团队目前正在使用react-query library,效果非常好!

  2. 正如这个 graphene-django Github issue 中提到的,GraphQL 订阅目前不支持开箱即用。

【讨论】:

    猜你喜欢
    • 2018-08-25
    • 2019-09-20
    • 2019-02-12
    • 2021-11-09
    • 2021-02-07
    • 2021-11-07
    • 2021-09-24
    • 2018-03-31
    • 2019-09-22
    相关资源
    最近更新 更多