Rest GraphQL与嵌入的区别

Rest GraphQL与嵌入的区别,rest,embedding,graphql,partial-response,Rest,Embedding,Graphql,Partial Response,我只是在玩一点graphql,还不能通过嵌入和部分响应识别graphql和REST之间的区别 TeamCity多年来一直使用部分响应,它作为“Restful”服务工作 REST是一种体系结构样式,而不是一种格式或查询语言(如GraphQL)。可以构建一个支持部分资源或资源层次结构的API(其他示例包括JSON补丁或JSON图),但这些方法不是REST的概念部分。另一方面,它们是GraphQL的概念部分。您选择的示例与GraphQL有一些相似之处,但这并不是因为它们是RESTful服务 另一方面

我只是在玩一点graphql,还不能通过嵌入和部分响应识别graphql和REST之间的区别

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


REST是一种体系结构样式,而不是一种格式或查询语言(如GraphQL)。可以构建一个支持部分资源或资源层次结构的API(其他示例包括JSON补丁或JSON图),但这些方法不是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也为此插入了GraphQL?除了HTTP,我还没有看到其他任何东西。事实上,我非常惊讶这些规范为诸如传输或响应序列化格式(JSON是“推荐的”,不是强制性的)这样的重要内容留出了空间(规范:“通过HTTP这样的传输发送”)。当您希望确保GraphQL能够成为一种普遍存在的语言时,这可能是有意义的。但我发现令人惊讶的是,许多人似乎认为RESTful服务是“专有的”,而GraphQL是“开放的”,尽管规范中的这一差距允许专有传输或序列化格式,这可能是任何东西,但不是开放的。