- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我理解为什么“REST 框架”供应商希望支持返回基于 Json 的表示和基于 XML 的表示,但为什么人们希望从同一个服务返回两者?
是不是因为您的客户端应用程序构建在一个没有可用的 Json 解析器的平台上?
是因为您希望界面得到更广泛的采用,因为您可以吸引更多人?
是不是因为您觉得它是所有 RESTful 接口(interface)都遵循的标准约定?
如果您同时交付:
您是否避免在 XML 中使用命名空间以使其与 Json 格式兼容?还是您的所有数据元素都只有一个命名空间?
您是否有某种标准化机制来将属性和元素映射 为某种一致的 Json 格式,或者您是否只是避免在 XML 中使用属性?
您是为每个表示创建不同的端点,还是使用内容协商来提供请求的格式?你有默认格式吗?
如果您在可编辑资源上使用缓存并使用不同的 URL,您如何确保当一个表示无效时其他表示也无效?
您觉得支持多种格式的好处值得付出努力吗?
所以主要原因似乎是偏好之一。一些开发人员更喜欢花括号,一些开发人员更喜欢尖括号。
有些人希望从 XML 迁移到 Json,因此需要同时支持两者以实现向后兼容性。
有些人想使用Json,但担心有些开发者害怕Json,所以他们都支持,以免得罪任何人。
在框架 XYZ 中开启该功能很容易,何乐而不为!
另一个有趣的建议原因是,JSON 可用于提供快速的脏数据摘要,而 XML 可用作语义丰富的完整表示。
最佳答案
与目前所说的完全不同的原因——
REST 接口(interface)是关于资源的,每个资源都有一个标识符,即 URL。仅仅因为您希望资源具有不同的序列化,无论是 XML、JSON、HTML 还是其他内容,我们仍然在描述 same 资源。
因此,我们使用“Accept” header 来确定客户端感兴趣的内容,而不是为 XML 和 JSON 提供不同的路径。在某些情况下,服务使用“Accept-Language” header 来确定他们应该为元数据使用什么语言。
如果我们为记录的不同序列化分配不同的标识符,那么对于语义网络,我们必须嵌入额外的信息来链接到描述“相同”对象的所有记录。
您可以在 Linked Data 下找到有关这些努力的更多信息。 ,尽管这通常是指在序列化时使用 RDF。
更新:关于链接到特定格式的讨论,我还建议人们考虑阅读 Functional Requirements for Bibliographic Records (又名 FRBR),它有一个概念模型,用于描述作为抽象“作品”的“书”与物理“项目”之间的关系,以及两者之间的层次。有一个bit of discussion FRBR 上的图书馆、信息和语义网络社区,包括它与数字对象的关系。
基本上,问题在于您可以在多个级别分配标识符(例如,资源,以及有关资源的元数据文本,或有关资源的元数据文本的序列化),并且每个有自己的用途。
您可能还会看到 OAI-ORE用于报告对象之间关系的规范,包括替代格式或语言。
关于xml - 为什么人们希望将 Json 和 XML 作为输出传递到他们的 REST 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1649793/
我正在尝试在我的代码库中为我正在编写的游戏服务器更多地使用接口(interface),并了解高级概念以及何时应该使用接口(interface)(我认为)。在我的例子中,我使用它们将我的包相互分离,并使
我有一个名为 Widget 的接口(interface),它在我的整个项目中都在使用。但是,它也用作名为 Widget 的组件的 Prop 。 处理此问题的最佳方法是什么?我应该更改我的 Widget
有一个接口(interface)可以是多个接口(interface)之一 interface a {x:string} interface b {y:string} interface c {z:st
我遇到了一种情况,我需要调用第三方服务来获取一些信息。这些服务对于不同的客户可能会有所不同。我的界面中有一个身份验证功能,如下所示。 interface IServiceProvider { bool
在我的例子中,“RequestHandlerProxy”是一个结构,其字段为接口(interface)“IAdapter”,接口(interface)有可能被调用的方法,该方法的输入为结构“Reque
我有一个接口(interface)Interface1,它已由类A实现,并且设置了一些私有(private)变量值,并且我将类A的对象发送到下一个接受输入作为Interface2的类。那么我怎样才能将
假设我有这样的类和接口(interface)结构: interface IService {} interface IEmailService : IService { Task SendAs
有人知道我在哪里可以找到 XML-RPC 接口(interface)的定义(在 OpenERP 7 中)?我想知道创建或获取对象需要哪些参数和对象属性。每个元素的 XML 示例也将非常有帮助。 最佳答
最近,我一直在阅读有关接口(interface)是抽象的错误概念的文章。一篇这样的帖子是http://blog.ploeh.dk/2010/12/02/InterfacesAreNotAbstract
如果我有一个由第三方实现的现有 IInterface 后代,并且我想添加辅助例程,Delphi 是否提供了任何简单的方法来实现此目的,而无需手动重定向每个接口(interface)方法?也就是说,给定
我正在尝试将 Article 数组分配给我的 Mongoose 文档,但 Typescript 似乎不喜欢这样,我不知道为什么它显示此警告/错误,表明它不可分配. 我的 Mongoose 模式和接口(
我有两个接口(interface): public interface IController { void doSomething(IEntity thing); } public inte
是否可以创建一个扩展 Serializable 接口(interface)的接口(interface)? 如果是,那么扩展接口(interface)的行为是否会像 Serilizable 接口(int
我试图在两个存储之间创建一个中间层,它从存储 A 中获取数据,将其转换为相应类型的存储 B,然后存储它。由于我需要转换大约 50-100 种类型,我希望使用 map[string]func 并根据 s
我正在处理一个要求,其中我收到一个 JSON 对象,其中包含一个日期值作为字符串。我的任务是将 Date 对象存储在数据库中。 这种东西: {"start_date": "2019-05-29", "
我们的方法的目标是为我们现有的 DAO 和模型类引入接口(interface)。模型类由各种类型的资源 ID 标识,资源 ID 不仅仅是随机数,还带有语义和行为。因此,我们必须用对象而不是原始类型来表
Collection 接口(interface)有多个方法。 List 接口(interface)扩展了 Collection 接口(interface)。它声明与 Collection 接口(int
我有一个 Java 服务器应用程序,它使用 Jackson 使用反射 API 对 DTO 进行一般序列化。例如对于这个 DTO 接口(interface): package com.acme.libr
如果我在 Kotlin 中有一个接口(interface): interface KotlinInterface { val id: String } 我可以这样实现: class MyCla
我知道Java中所有访问修饰符之间的区别。然而,有人问了我一个非常有趣的问题,我很难找到答案:Java 中的 private 接口(interface)和 public 接口(interface)有什
我是一名优秀的程序员,十分优秀!