"Rest" API 和 "Graph" API 有什么区别
What is difference between "Rest" API and "Graph" API
我正在 Azure AD B2C 中创建一个 API 项目,我想在其中创建一个自定义 UI。对于这个要求,我想知道 "Rest" API 和 "Graph" API.
哪个更好
谁能给我推荐一下,哪个更好用?
虽然 GraphQL 是 often mentioned as the replacement for REST,但两者实际上解决的是不同的问题。
首先,REST 不是一种协议,而只是一种风格,如果应用得当,它只会将客户端与服务器分离。因此,遵循 REST 原则的服务器将为客户端提供采取进一步步骤所需的任何信息。客户端最初在没有任何先验知识的情况下开始,并通过发出请求和处理响应来即时学习。
虽然 REST 与协议无关,这意味着它可以构建在许多协议之上,但 HTTP 可能是最突出的一种。 RESTful 客户端的一个常见示例是我们都熟悉的 Web 浏览器。它将通过调用书签 URI 或调用地址栏中输入的 URI 开始,然后从那里开始。
HTTP 没有指定必须发送请求或响应的表示形式,而是将其留给协商它们的客户端和服务器。这有助于解耦,因为客户端和服务器都可以依赖通用接口 (HTTP),并且只强绑定到用于交换数据的已知媒体类型。对等端无法以某种表示形式处理文档(由于缺少相应的 MIME 类型支持)将通过相应的错误消息指示他的其他对等方。媒体类型只是数据有效负载的语法和语义的人类可读文档,因此是 REST 架构中最重要的部分。它教会对等方如何解析和解释接收到的有效负载并真正理解它,尽管很多人仍然将基于 JSON 的 HTTP API 的 REST 与他们放入的过度设计的 URI 混淆付出很多努力来赋予 URI 某种逻辑意义,而实际上客户端和服务器都不会解释它,因为它们可能会使用为 URI 提供的 link 关系名称。
另一方面,GraphQL 是一种查询语言,它使客户端能够请求它想要从服务器检索的特定字段和元素。笼统地说,它是 Web 的某种 SQL。因此,它必须事先了解可用数据,这些数据以某种方式将客户端耦合到服务器。如果服务器重命名某些字段,客户端可能无法进一步检索此类信息,尽管我不是 GraphQL 专家。
如上所述,REST 经常与基于 JSON 的 HTTP API 混淆,后者允许在直接映射的数据库 entries/entities 上执行查询。请记住,REST 并不禁止这样做,尽管它的重点是对等点的解耦,而不是某些 Web 公开数据库条目的检索方面。
在 Azure AD 及其 API 的上下文中,直接访问 Microsoft Graph 服务时使用术语 REST API。 http通讯代码,鉴权,JSON解析等全部你写
术语 Graph API 或 Graph 客户端是对 Microsoft 开发的 Graph Client SDK 的引用,它封装了上述内容。
如果您的平台没有SDK,您需要直接使用REST API。否则,我建议使用 SDK。
我正在 Azure AD B2C 中创建一个 API 项目,我想在其中创建一个自定义 UI。对于这个要求,我想知道 "Rest" API 和 "Graph" API.
哪个更好谁能给我推荐一下,哪个更好用?
虽然 GraphQL 是 often mentioned as the replacement for REST,但两者实际上解决的是不同的问题。
首先,REST 不是一种协议,而只是一种风格,如果应用得当,它只会将客户端与服务器分离。因此,遵循 REST 原则的服务器将为客户端提供采取进一步步骤所需的任何信息。客户端最初在没有任何先验知识的情况下开始,并通过发出请求和处理响应来即时学习。
虽然 REST 与协议无关,这意味着它可以构建在许多协议之上,但 HTTP 可能是最突出的一种。 RESTful 客户端的一个常见示例是我们都熟悉的 Web 浏览器。它将通过调用书签 URI 或调用地址栏中输入的 URI 开始,然后从那里开始。
HTTP 没有指定必须发送请求或响应的表示形式,而是将其留给协商它们的客户端和服务器。这有助于解耦,因为客户端和服务器都可以依赖通用接口 (HTTP),并且只强绑定到用于交换数据的已知媒体类型。对等端无法以某种表示形式处理文档(由于缺少相应的 MIME 类型支持)将通过相应的错误消息指示他的其他对等方。媒体类型只是数据有效负载的语法和语义的人类可读文档,因此是 REST 架构中最重要的部分。它教会对等方如何解析和解释接收到的有效负载并真正理解它,尽管很多人仍然将基于 JSON 的 HTTP API 的 REST 与他们放入的过度设计的 URI 混淆付出很多努力来赋予 URI 某种逻辑意义,而实际上客户端和服务器都不会解释它,因为它们可能会使用为 URI 提供的 link 关系名称。
另一方面,GraphQL 是一种查询语言,它使客户端能够请求它想要从服务器检索的特定字段和元素。笼统地说,它是 Web 的某种 SQL。因此,它必须事先了解可用数据,这些数据以某种方式将客户端耦合到服务器。如果服务器重命名某些字段,客户端可能无法进一步检索此类信息,尽管我不是 GraphQL 专家。
如上所述,REST 经常与基于 JSON 的 HTTP API 混淆,后者允许在直接映射的数据库 entries/entities 上执行查询。请记住,REST 并不禁止这样做,尽管它的重点是对等点的解耦,而不是某些 Web 公开数据库条目的检索方面。
在 Azure AD 及其 API 的上下文中,直接访问 Microsoft Graph 服务时使用术语 REST API。 http通讯代码,鉴权,JSON解析等全部你写
术语 Graph API 或 Graph 客户端是对 Microsoft 开发的 Graph Client SDK 的引用,它封装了上述内容。
如果您的平台没有SDK,您需要直接使用REST API。否则,我建议使用 SDK。