OData – OData vs GraphQL

GraphQL 很火, 很厉害, 但是它和 OData 有本质的区别. 所以并不是说任何一样对比另一个绝对的好.

GraphQL is not OData

twitter 的讨论

 

有几个点是我能 Get 的到的.

OData = SQL in URL

OData was a way to serialize a SQL statement into a URL (OData 就像 SQL 语句的 URL 版本)

it challenging to limit the exposure 要限制 client side 的 query 能力是很困难的.

 

OData Standardized

OData 的规范是它的优势, 就好比 RPC 对 RESTful一样. RESTful 有规范, 容易理解, 但是不容易表达万物. RPC 则可以表达万物, 但又太没有规范了.

 

Flaws in OData

 

OData 通常和 database schema 邦的比较紧 (所以说它像 SQL Query), 一旦 schema 换了, 但又想维护旧的版本会比较难.

OData 偏向统一管理, 很难对特殊案例做优化.

 

最好的描述

OData 像 SQL Query, GraphQL 像 stored procedure. 你慢慢品.

所以这 2 者一定是共存的, 而且是互相补助的. 

 

 

总结

OData 像 SQL Query, GraphQL 像 stored procedure.

OData 像 RESTful, GraphQL 像 RPC

当你希望简单统一的时候, 你会觉得 RESTFul 很棒, SQL Query 就够用了, OData 很好.

但当你遇到特别情况, 没办法用简单的方式的时候, RPC, stored procedure, GraphQL 就凸显它的魅力了. 

我们看双方的使用场景. OData 倾向于企业应用的 API, SAP 这类. 通常是比较简单的, 关系数据库 pattern.

GraphQL 则是互联网应用, 公开的 API,  whatever 类型数据形式的 (比如 NoSQL)

所以总结 GraphQL 比 OData 可以表达更多 (更自由), OData 比 GraphQL 有规则 (更约束)

自由还是约束, 各有各的好, 依据自己项目的特性来选择吧.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

推荐这些文章:

API接口,restful规范,接口测试工具postman,序列化

一API接口
# API接口:通过网络,规定了前后端信息交互规则的url链接,也就是前后端信息交互的媒介# web api接口简单的概括有四大特点 url地址:长的像返回数据的url链接        https://api.map.baidu.com/place/v2/search    请求方式:get、post、put、patch、delete        采用get方式请求上方接口    请求参数:json或xml格式的key-value类型数据  ...

|NO.Z.00117|——————————|BigDataEnd|——|Java&MySQL.XML.V08|------------------------------------------|MySQL.v08|引入schema约束|

[BigDataJava:Java&MySQL.XML.V08]                                                                   [BigDataJava.MySQL基础][|章节七...

a Reference for DataBase Object Naming Rules

refere to:http://blogs.msdn.com/steven_bates/archive/2006/03/20/Database-Object-Naming-Rules.aspxVersion 0.0.0.1, 2007.9.19
Ez.Zhao
Content
1     Doc Goal
2     Rules of TableName
3     Rules of FieldName
3.1      ...

编写Delphi控件属性Stored和Default的理解及应用

转:https://www.cnblogs.com/h2zZhou/p/5909274.html
    property ButtonSize: Integer read FButtonSize write SetButtonSize default 0;    property Color: TColor read FColor write SetColor default clBtnHighlight;    property Increment: TScrollBarInc read FIncrement...

分布式之gRPC概念+.net core 鉴权授权

1.什么是PRC (Remote Procedure Call)
2.gRPC支持4种流 grpc就是谷歌开发的rpc
3.rpc流的概念
4.和Web API WCF 有什么区别呢
 
1.什么是PRC (Remote Procedure Call)=远程过程调用:
  1. RPC: 就是我想调用另外一个程序写的方法;----WebService。有一个代理 来完成对服务方法调用
  2.SAP系统RPC调用的原理其实很简单,有一些类似于三层构架的C/S系统,第三方的客户程序通过接口调用SAP内部的方法,然后方法返回数据
 
2.gRPC支持4种流 grpc就是谷歌开...

RESTful服务设计-2022-02

设计参考资料:
1、RESTful服务最佳实践  很全面,还有附加书籍和网站推荐 
2、RESTful API 设计指南 域名,版本、状态码、身份认证 OAuth 2.0
 
3、理解REST和RPC  I/O模型、RPC框架
 
4、springboot实战之常用http客户端整合 主要介绍三种http客户端,httpcomponents项目下的httpclient(后边简化描述为httpcomponents-client)、restTemplate、webclient的基本用法
 
Spring b...

关于vs导入配置的问题

问题
我在网上down了一些vs的颜色配置文件,然后倒入到我的vs中,显示导入成功,结果我原来的样式没有了,新的样式也没有,变成了最初的白底黑字,然后再倒入其他的配置也是同样的效果,vs的版本没有弄错,请问是什么原因,该如何解决。谢谢
 

最佳回答
杯具,重装一下VS吧,VS颜色配置就在VS中改呗

...

go语言rpc开发

1、服务端
Go语言的RPC包的路径为net/rpc,也就是放在了net包。

rpc.Register函数调用会将对象类型中所有满足RPC规则的对象方法注册为RPC函数,所有注册的方法会放在“HelloService”服务空间之下。然后我们建立一个唯一的TCP链接,并且通过rpc.ServeConn函数在该TCP链接上为对方提供RPC服务。
2、客户端

rpc.Dial拨号RPC服务,然后通过client.Call调用具体的RPC方法。
  在调用client.Call时,第一个参数是用点号链接的RPC服务名字和方法名字,第二和第三个参数分别我们定义RPC方法的两个参数。
 
...

pytest之配置可选的项目系统URL(pytest-base-url)

前言
①当我们的自动化代码完成之后,通常期望可以在不同的环境进行测试,此时可以将项目系统的URL单独拿出来,并且可以通过pytest.ini配置文件和支持pytest命令行方式执行。
② pytest-base-url 是一个简单的pytest插件,它通过命令行或配置文件提供可选的基本 URL。
③在测试用例里直接传 base_url 参数,当做fixture函数使用(此时就会调用pytets.ini里面的 base_url 地址或者pytest命令行方式执行时的 base_url 参数)
④ base...

文章标题:OData – OData vs GraphQL
文章链接:https://www.dianjilingqu.com/3934.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>