REST服务返回XML文档的集合

REST服务返回XML文档的集合,rest,Rest,我们正在编写一个REST服务来查询PDF文件。服务使用者需要这些PDF的元数据,而不是实际的PDF。的元数据恰好存储为XML文档,每个PDF资源对应一个XML文档。资源和资源的元数据是完全不同的文件 查询响应应该是什么样子 通常,我们对请求/响应主体使用JSON。响应主体是否应该是包含URL集合的JSON对象,其中每个URL链接到元数据文档?这看起来很干净,但会导致大量不必要的网络流量,因为使用者必须为每个元数据文档发送GET请求 元数据文档的XML是否应该嵌入到响应主体的JSON对象中?(恶心

我们正在编写一个REST服务来查询PDF文件。服务使用者需要这些PDF的元数据,而不是实际的PDF。的元数据恰好存储为XML文档,每个PDF资源对应一个XML文档。资源和资源的元数据是完全不同的文件

查询响应应该是什么样子

通常,我们对请求/响应主体使用JSON。响应主体是否应该是包含URL集合的JSON对象,其中每个URL链接到元数据文档?这看起来很干净,但会导致大量不必要的网络流量,因为使用者必须为每个元数据文档发送GET请求

元数据文档的XML是否应该嵌入到响应主体的JSON对象中?(恶心!)


是否有一种既干净又高效的解决方案?

基于一些澄清的评论,我建议您不要编写“RESTful”API。你不需要。您没有需要以任何复杂方式进行交互的对象。您没有需要受影响的状态(REST表示代表性状态转移)

您只需要一个HTTP API。只需返回XML文件。如果需要,您还可以提供一个端点来压缩多个XML文档

因此,请这样做:

  • /api/host/123
    -下载PDF文件(
    内容类型:application/PDF
    )-您没有说是否已经有PDF的端点,但如果确实需要,我会这样构造它
  • /api/host/123/metadata
    -下载XML元数据(
    内容类型:text/XML
  • /api/host/bulk\u metadata
    -下载POST参数中列出的文件ID的元数据压缩包(
    内容类型:application/ZIP

使用
内容配置:附件;filename=“{filename}.{pdf | xml | zip}”
告诉浏览器将内容下载到磁盘,而不是内联显示。

您的“REST API”所做的一切是为他们提供一个链接来下载pdf的元数据,还是这是一个更大的API的一部分?另外,它是单个pdf的端点,或者它是一个具有GET/POST参数的单一端点,该参数指定它们需要哪些PDF的元数据?@gre GET资源端点当前获取1个XML文档。例如,发送GET请求“”会得到一个XML文档的响应。我只会将XML文档作为下载返回。它不是一个真正的“RESTful API”,它只是一个用于获取文档元数据的HTTP API。除非您真的愿意,否则您不需要将有效负载嵌套在JSON/XML中。我很感激。我已经向团队提出了一些选择(包括你的)。当我们决定方法时,我会发布一个更新。@ahoffer你选择了什么?我在一月份离开了这个项目,我不记得我们做了什么。我认为我们将超链接列表发送回各个资源,并让客户机逐个请求资源。决定这一点的力量不会有太多的网络流量,因为最终页面大小会限制一次返回的超链接的数量。