在我的职业生涯中,我已经使用过OData了很多,现在,来自不同团队的同事中很少有人建议我们使用JsonAPI和GraphQL,因为它与Microsoft无关。我对这两种查询语言都没有太多的经验。据我所知,OData是Salesforce,IBM,Microsoft使用的标准,并且它已经非常成熟。为什么要切换到JsonAPI和/或GraphQL?有真正的好处吗? JsonAPI和GraphQL是新标准吗?基于流行度更改公共(public)api实现似乎没有用,尤其是在没有太大好处的情况下。
有人可以启发我吗?
请您参考如下方法:
OData是与JSON API类似的规范。它们都描述了用于创建和使用RESTful API的标准协议(protocol)。 GraphQL是完全不同的API设计方法,并指定了查询API资源的不同方法。
有许多用于流行编程语言的库-.NET,Java,JavaScript,PHP和Ruby。该规范允许动态资源,并且有一个服务文档,其中列出了供客户端发现的所有API端点。此外,还有一个描述模式的元数据文档。
JSON API通过JSON文档中的
link
属性支持HATEOAS。其他功能包括分页,排序,过滤和关系。 JSON API服务器生成的JSON文档非常冗长,具有许多嵌套属性。尽管GraphQL使用HTTP,但它不被认为是REST,而是REST的替代。相反,它在单个(虚拟)JSON文档中使用了查询/响应模型。对于开发人员来说,这种新模型更好一些,但是它在REST之上的好处值得商bat。考虑到它的年龄,生态系统尚未成熟。
为了清楚和完整起见,我将OpenAPI包括在列表中,尽管它并非完全是API规范。这会使某些人感到困惑。 OpenAPI标准是用于描述和定义API的与语言无关的标准。您的API可以遵循上述标准之一(不包括GraphQL),并且还可以使用OpenAPI 3进行记录。
像OpenAPI这样的规范所带给您的最好的东西就是围绕它们的工具-API文档页面的生成器,客户端SDK代码的生成器等。
该标准可能是当今最常用的API声明,文档和代码生成。云提供商(如Amazon Web Services)在其API网关中也支持它。
总而言之,OData和JSON API都是JSON数据格式,可在数据周围添加上下文和功能(例如链接),GraphQL是一种全新的查询和变异JSON数据的新方法,而OpenAPI是声明和记录任何数据的标准方法RESTful API。
我的个人意见:
如您所见,那里有很多RESTful规范,而不是一个通用标准。我同意 xumix的用法-他们似乎都患有“此处未发明”综合症。选择以上任何一种方法的好处都是很小的,特别是在您的项目为中小型项目时。
您的API实现哪种规范有关系吗?大概不多。只需专注于构建一致且文档齐全的API。