【问题标题】:Difference between GraphQL and EmbeddingGraphQL 和 Embedding 的区别
【发布时间】:2016-10-29 23:49:08
【问题描述】:

我只是玩了一下 graphql,还不能识别 graphql 和 REST 在嵌入和部分响应方面的区别。

TeamCity 多年来一直使用部分响应,它作为“Restful”服务运行

https://github.com/dotarj/PartialResponse

http://v2.wp-api.org/reference/links.html

【问题讨论】:

    标签: rest embedding graphql partial-response


    【解决方案1】:

    REST 是一种架构风格,而不是一种格式或一种查询语言(就像 GraphQL 一样)。可以构建支持部分资源或资源层次结构的 API(其他示例包括 JSON 补丁或 JSON Graph),但这些方法不是 REST 的概念部分。另一方面,它们 GraphQL 的概念部分。您选择的示例与 GraphQL 有一些相似之处,但这并不是因为它们是 RESTful 服务。

    另一方面,REST 基于一些不符合 GraphQL 的方法(反之亦然)。不完整的列表包括:

    • HTTP 是 REST 的构建块。 GraphQL 规范谈到了“客户端”和“服务器”,但我没有读到它需要 HTTP。
    • REST 基于 HTTP 动词。看起来 GraphQL 不需要 HTTP,它也不需要 HTTP 动词。无论如何,这是行不通的,因为 GraphQL 允许您在一个查询中混合操作:您可以在一个请求中执行一个突变和一个查询——这与 REST 不兼容,因为查询必须是 GET,而突变必须是 POST 或 PUT。
    • GraphQL 中缺少 HTTP 状态代码的语义。

    【讨论】:

    • 你是绝对正确的。也许你可以或不应该比较这两件事。到目前为止,我只看到了与 HTTP 相关的 GraphQL,因为 Facebook 也为此目的插入了它?
    • 我也没有看到过 HTTP 以外的任何东西。事实上,我很惊讶规范为传输或响应序列化格式等重要内容留出了空间(规范:“通过 HTTP 等传输发送”)(JSON 是“推荐的”,不是强制性的)。当您想确保 GraphQL 可以成为一种无处不在的语言时,这可能是有道理的。但令我惊讶的是,许多人似乎认为 RESTful 服务是“专有的”并且 GraphQL 是“开放的”,尽管规范中的这种差距允许专有传输或序列化格式,这可以是任何东西——但不是开放的。
    猜你喜欢
    • 2012-11-01
    • 2020-05-16
    • 2017-09-12
    • 2018-01-18
    • 2020-12-12
    • 2022-09-27
    • 2021-06-24
    • 2018-10-08
    • 2015-11-10
    相关资源
    最近更新 更多