有什么区别"休息" API和" Graph" API

时间:2017-12-29 12:03:45

标签: rest azure azure-ad-b2c azure-ad-graph-api

我正在Azure AD B2C中创建一个API项目,我想在其中创建自定义UI。对于这个要求,我想知道哪个更好?"休息" API& "格拉夫" API。

有人可以向我推荐,哪个更好用?

2 个答案:

答案 0 :(得分:3)

当GraphQL为often mentioned as the replacement for 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混淆,后者允许对直接映射的DB条目/实体执行查询。请记住,REST并没有禁止这一点,尽管它的重点是对等体的分离,而不是某些Web暴露数据库条目的检索方面。

答案 1 :(得分:2)

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

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

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