繁体   English   中英

“ Rest” API和“ Graph” API之间有什么区别

[英]What is difference between “Rest” API and “Graph” API

我正在Azure AD B2C中创建一个API项目,我想在其中创建自定义UI。 对于此要求,我想知道“ Rest” API和“ Graph” API中哪个更好。

谁能建议我使用哪个更好?

尽管经常提到 GraphQL 作为REST的替代品 ,但两者实际上都解决了不同的问题。

首先,REST不是协议,而只是一种样式,如果正确应用,它将使客户端与服务器脱钩。 因此,遵循REST原则的服务器将为客户端提供采取进一步步骤所需的任何信息。 客户端最初是在没有先验知识的情况下开始的,并通过发出请求和处理响应来动态学习。

尽管REST与协议无关,这意味着它可以建立在许多协议之上,但HTTP可能是最突出的协议。 RESTful客户端的常见示例是我们都熟悉的Web浏览器。 首先,它会调用一个加书签的URI或调用在地址栏中输入的URI,然后从那里继续。

HTTP不指定必须发送请求或响应的表示形式,而是将其留给协商它们的客户端和服务器。 由于客户端和服务器都可以依赖公共接口(HTTP),并且只能牢固地绑定到用于交换数据的已知媒体类型上,因此这有助于解耦。对等体无法以某种表示形式处理文档(由于缺少相应的mime类型支持)将通过相应的错误消息指示其其他同伴。 因此,媒体类型只是数据可读语法和数据有效载荷的语义可读文档,因此是REST体系结构中最重要的部分。 它教会了一个对等方如何解析和解释接收到的有效负载,并使之真正有意义,尽管许多人仍将REST与基于JSON的HTTP API与过度设计的URI混淆了起来,他们付出了很多努力来为URI提供一些内容这实际上是一种逻辑意义,实际上客户端和服务器都不会解释它,因为它们可能会使用为URI提供的链接关系名称。

另一方面,GraphQL是一种查询语言,它使客户端可以请求其要从服务器检索的特定字段和元素。 粗略地说,它是用于Web的某种SQL。 因此,它必须事先具有可用数据的知识,以某种方式将客户端耦合到服务器。 如果服务器将重命名某些字段,则尽管我不是GraphQL专家,但客户端可能无法进一步检索此类信息。

如上所述,REST通常与基于JSON的HTTP API混淆,该API允许对直接映射的DB条目/实体执行查询。 请记住,REST并不禁止这样做,尽管REST的重点是对等体的解耦,而不是某些Web公开数据库条目的检索方面。

在Azure AD及其API的上下文中,当您直接访问Microsoft Graph服务时,将使用术语REST API。 您编写所有http通信代码,身份验证,JSON解析等。

术语Graph API或Graph客户端是对Microsoft开发的Graph Client SDK的引用,其中封装了上述内容。

如果您的平台没有SDK,则需要直接使用REST API。 否则,我建议使用SDK。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM