首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【REST架构】OData、JsonAPI、GraphQL 有什么区别?

据我所知,OData 是 Salesforce、IBM、Microsoft 使用标准,并且非常成熟。为什么要切换到 JsonAPI 和/或 GraphQL?有真正好处吗?...根据受欢迎程度更改公共 api 实现似乎没有用,尤其是在没有太大好处情况下。 有人可以启发我吗? 答案: OData 是与 JSON API 类似的规范。...它们都描述了用于创建和使用 RESTful API 标准协议。GraphQL 是一种完全不同 API 设计方法,并指定了一种查询 API 资源不同方式。...这种新模型更适合开发人员使用,但它相对于 REST 优势是值得商榷。鉴于其年轻,生态系统尚未成熟。 为了清楚和完整起见,我将 OpenAPI 包括在列表中,尽管它并不完全是 API 规范。...大多数编程语言都有实现,以及许多其他工具, Web UI 生成器等。 使用 OpenAPI 等规范获得最好东西是围绕它们工具——API 文档页面的生成器、客户端 SDK 代码生成器等。

1.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

【API架构】REST API 行业辩论:OData vs GraphQL vs ORDS

Progress 在数据访问标准(包括 ODBC、JDBC、ADO.NET 和现在 OData (REST))开发和贡献方面也拥有丰富传统,并且是第一个加入 OData 技术委员会成员。...因此,您可以通过创建可以调用函数来进行过滤、排序和连接等操作,但应用程序开发人员必须了解它们在语义上工作方式才能知道它们行为是什么。...GraphQL 通过强制客户端准确指定他们需要哪些字段来解决 API 版本控制和维护问题。API 开发人员可以主动联系已知字段使用者,以迁移已弃用字段。响应包括有关哪些字段已弃用信息。...OData 通过提供一个选择列表来将返回字段数限制为应用程序所需字段数,从而提供类似的功能。这减少了应用程序中响应大小和处理。但是,它没有提供一种机制来指示字段已被弃用。...例子 为了直观地说明使用这些 API 差异,以下两个代码示例展示了如何在 GraphQL 和 OData 中执行“排序依据”。

2.1K30

Microsoft REST API指南

在服务迭代过程中,有些服务(接口)可能在更改版本号情况下向响应添加字段。此类服务必须在其文档中注明,客户端必须忽略这些未知字段。...许多HTTP标头在RFC7231中定义,但是在IANA标头注册表中可以找到完整已批准头列表。...以查询参数方式提交自定义请求头 有些标头对某些场景(AJAX客户端)兼容,特别是在不支持添加标头跨域调用时。...作为标准XMLHttpRequest调用一部分,所有握手步骤都是不可见。 许多其他平台(.NET)已集成了对CORS支持。 8.1.1....可能已过滤列表根据排序条件进行排序。 分页。经过筛选和排序列表上显示了实现分页视图。这适用于服务器驱动分页和客户端驱动分页。 10.

4.5K10

ComponentOne.NET仪表板布局控件 — 实现可视化数据大屏展示

XAML标准,互操作性是所有应用程序关键,这也将作为我们未来产品规划核心,我们将继续创新和加强现有产品。...自动完成控件(MultiAutoComplete) 此控件支持从已过滤项目列表中选择多项目类型,所选项目在文本区域中显示为标签。...数据切片器和智能过滤器(DataFilter and Slicer) C1DataFilter控件结合了切片器和智能过滤器UI,使用户可以根据自定义标准过滤数据。...靶心图控件(BulletGraph) BulletGraphs控件可作为仪表板和仪表盘样式补充,通常不会显示过多信息,因此不必占用太多空间资源,这样做好处是让用户专注于核心进度而避免混杂无用且分散注意力装饰...服务器端ODataCollectionView 服务器端ODataCollectionView将使控件能够绑定到ODATA服务,并且还可以在绑定到ODATA服务控件中应用服务器端排序和过滤

5.2K20

C# 特性 System.ComponentModel 命名空间属性方法大全,System.ComponentModel 命名空间特性

命名空间类将划分为以下类别: 核心组件类。 Component, IComponent, Container,和IContainer类。 组件授权。...System.ComponentModel.Composition 此命名空间提供构成托管扩展框架 (MEF) 核心类 System.ComponentModel.DataAnnotations...命名空间提供定义 ASP.NET MVC 和 ASP.NET 数据控件特性 System.ComponentModel.Design.Data 命名空间包含类可用于为数据相关组件生成自定义设计时行为...命名空间为用于定义 ASP.NET MVC 和 ASP.NET 数据控件元数据特性提供支持 System.ComponentModel.Composition.Primitives 此命名空间提供作为...---- 3,System.ComponentModel.DataAnnotations 官方描述是 命名空间提供定义 ASP.NET MVC 和 ASP.NET 数据控件特性。

3.9K30

从Node.js查询PostgreSQL数据

从Node.js查询PostgreSQL数据 API服务器公开允许连接数据Web服务。使用CData API服务器OData端点对Node.js中PostgreSQL数据执行CRUD查询。...CData API服务器与PostgreSQLADO.NET Provider配对时,将PostgreSQL数据(或来自120多个其他ADO.NET提供程序中任何一个数据)公开为OData端点,可以使用简单...也可以根据IP地址限制访问; 默认情况下,除本地计算机外所有IP地址都受限制。您可以使用SSL进行身份验证以及加密连接。...从Node.js消耗PostgreSQL ODataOData源很容易在Node.js中工作。您可以使用Node.js中HTTP客户端从API服务器OData端点请求JSON格式数据。...下面的示例网址应用了一个简单过滤器,用于在ShipCountry列中搜索值为USA记录。

3.4K10

asp.net web api 版本控制

版本控制 版本控制方法有很多,这里提供一种将Odata与普通web api版本控制机制统一方法,但也可以单独控制,整合控制与单独控制主要不同是:整合控制通过VersionControllerSelector...来选择控制器过滤器,而不是直接选择控制器。...采用此机制来控制版本,应按照如下规则命名控制器: 自定义标识符+版本+Controller 自定义标识符:能体现控制器含义字符串 版本:表示版本字符串,例如:V1,V1.0;建议使用V1.0这样写法...,因为这样控制器名称会相当怪异,如果表示小版本号,那么可以使用V1D0,这种写法,即用一个字母代替句号。...命名空间对应了项目文件组织形式,控制器命名空间为: ?

1.8K60

c++枚举类型enum输出_python中枚举

Enum枚举:枚举是一组命名整型常量,枚举类型是使用 enum 关键字声明。...枚举是值类型,数据直接存储在栈中,而不是使用引用和真实数据隔离方式来存储,其包含自己值,且不能被继承或者传递继承,枚举中每个元素基础类型是 int。可以使用冒号指定另一种整数值类型。...默认情况下,第一个枚举符号值是 0; 举例说明: class Program//类名 { enum Sss//枚举名 { //枚举内容,用逗号进行隔开列表 吃饭, 睡觉, 打豆豆, 打游戏...在给枚举类型实例赋值时,VS.NET IDE会通过IntelliSense弹出一个包含可接受值列表框,减少了按键次数,并能够让我们想起有那些值可以使用 五.Enum枚举注意事项(举例说明): enum...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

1.5K40

何在C#中使用ArrayPool和MemoryPool

单击在“创建新项目”窗口中,从模板列表中选择“控制台应用程序(.NET Core)”显示。在在接下来显示“配置新项目”窗口中,指定新项目的名称和位置。...这将在VisualStudio2019中创建一个新.NET核心控制台应用程序项目。在本文后续部分中,我们将使用这个项目来使用ArrayPool和MemoryPool 什么是ArrayPool?...中ArrayPool<;T>;类系统缓冲器命名空间是可重用托管阵列高性能池。在数组经常被重用情况下,它可以用来最小化分配和提高性能。...MemoryPool<;T>;类# 那个系统缓冲区内存池;T>;与系统内存命名空间表示内存池。...您可以从我之前文章中了解更多关于对象池和对象池设计模式信息 如何在C#中做更多:如何在C中使用缓冲区类;如何在C中使用命名参数和可选参数;如何在C中使用AutoMapper;如何在C中使用lambda

5.5K30

Magicodes.IE 2.2发布

命名空间部分特性来控制导入导出 #63 2020.04.16 [Nuget]版本更新到2.2.0-Beta 9 [EXCEL模板导出]修复只存在一列时导出#73 https://github.com...,可影响导入和导出) 显示属性 DisplayFormatAttribute DescriptionAttribute 支持使用系统.ComponentModel.DataAnnoations命名空间部分特性来控制导入导出...Bool类型导入数据验证项生成,以及相关数据转换 枚举默认情况下会自动获取枚举描述、显示名、名称和值生成数据项 /// /// 学生状态 正常、流失、休学、勤工俭学、顶岗实习...支持使用系统.ComponentModel.DataAnnoations命名空间部分特性来控制导入导出 #63 https://github.com/dotnetcore/Magicodes.IE.../issues/63 支持在ASP.NET核心网络API中使用自定义格式化程序导出Excel、PDF、CSV等内容 #64 https://github.com/dotnetcore/Magicodes.IE

1.3K10

使用管理门户SQL接口(一)

文档—允许查看SQL错误代码列表和SQL保留字列表。 如果选择了一个表,则允许显示类文档(该表类引用页)。选择命名空间所有SQL操作都会在特定名称空间中进行。...因此,必须首先指定要通过单击SQL接口页面顶部 “开关switch” 选项要使用命名空间。这将显示可用名称空间列表,可以从中进行选择。可以设置管理门户默认命名空间。...单击所需用户名称。这允许编辑用户定义。从“常规”选项卡中,从下拉列表中选择“启动命名空间。单击“保存”。如果未选择启动命名空间,则会默认为%SYS.。...从Show History列表中执行SQL语句将更新其执行时间(本地日期和时间戳),并增加其计数(执行次数)。可以过滤Show History列表,如下所示:在过滤框中指定一个字符串,然后按Tab键。...只有包含该字符串历史项才会包含在刷新后列表中。 筛选器字符串可以是在SQL语句列中找到字符串(比如表名),也可以是在执行时间列中找到字符串(比如日期)。 过滤字符串区分大小写。

8.3K10

REST API设计指导——译自Microsoft REST API Guidelines(四)

对于双目运算,则要求当参与运算两个值是等值情况下,如果满足运算结果与参与运算两个值相等,则称该运算幂等,求两个数最大值函数,有在在实数集中幂等,即max(x,x) = x。...在使用 UPSERT 情况下,对不存在资源 使用PATCH 方法时,服务端应进行创建,已存在时,服务端应进行更新处理。...所有头部值必须遵循在定义头部字段规范中所阐述语法规则(syntax rules )。在HTC721中定义了许多HTTP报头,但是在IANA报头注册表中可以找到完整批准报头列表。...这个规则一个例外是Accept标头。通常使用具有简单名称方案,而不是使用HTTP规范中描述Accept完整功能。 7.9....这允许构建简单可靠基础架构来处理异常,作为成功响应独立处理流程。 以下是基于OData v4 JSON规范。 但是,它是非常通用,不需要指定特定OData结构。

2K50

6.python3实用编程技巧进阶(一)

1.1.如何在列表中根据条件筛选数据 # 1.1.如何在列表中根据条件筛选数据 data = [-1, 2, 3, -4, 5] #筛选出data列表中大于等于零数据 #第一种方法,推荐 res1...(50,100) for i in range(1,21)} print(d) #过滤出分数为90学生字典 #第一种方法 d1 = {k:v for k,v in d.items() if v >=...筛选出能被3整除数 s1 = {x for x in s if x % 3 == 0} print(s1) 1.4.如何为元祖中每个元素命名,提高程序可读性  如下元祖,通过函数判断年龄和性别,但是这样代码可读性很差...[2] == 'male': pass s1 = ('derek',22,'male','111@qq.com') #第一种:使用枚举 from enum import IntEnum...pass if student[2] == 'male': pass s1 = ('derek',22,'male','111@qq.com') #第一种:使用枚举

53430

.NET Core下日志(1):记录日志信息

关于日志记录实现,我们有太多第三方框架可供选择,比如Log4Net、NLog、Loggr和Serilog 等,当然我们还可以选择微软原生诊断机制(相关API定义在命名空间“System.Diagnostics...日志记录编程主要会涉及到三个核心对象,它们分别是Logger、LoggerFactory和LoggerProvider,这三个对象同时也是.NET Core日志模型中核心对象,并通过相应接口(ILogger...除此之外,我们还可以直接指定一个类型为LogLevel参数来指定过滤日志采用最低等级。我们演示实例中使用Logger可以按照如下两种方式来创建。...NET Framework时候,就在“System.Diagnostics”命名空间中提供了Debug和Trace两个类帮助我们完成针对调试和追踪信息日志记录。...在“System.Diagnostics”命名空间中提供了若干预定义TraceListener,我们也可以自由地创建自定义TraceListener。

1.1K70
领券