【问题标题】:Multiple content type support for nodejs XML <-> JSONnodejs XML <-> JSON 的多种内容类型支持
【发布时间】:2013-03-23 03:06:44
【问题描述】:

我希望对我的服务器的所有 Rest API 请求同时支持 XML 和 JSON Content-Type。有什么想法吗?

我正在考虑添加中间件来检查请求的 Content-Type / Accept 以及它的 XML 是否将其转换为 JSON 并将其传递给路由,并确保在发送之前将这些响应转换回 XML。

所以我的问题是:

  • 最佳方法是什么?
  • 是否有任何现有的库可以做到这一点?

我不想在每个端点中添加额外的逻辑,也不想为它创建新的端点。必须有更好的方法来做到这一点。

PS:我用的是快递。

编辑:要求发生了变化,我不只使用一种方式翻译(json 到 xm):[this] (http://goessner.net/download/prj/jsonxml/)

【问题讨论】:

  • 有HTTP Accept 标头...

标签: javascript xml json node.js content-type


【解决方案1】:

使用Accept header 来确定客户端是否更喜欢 JSON 或 XML,而不是查询参数。语义是 Accept 标头意味着“我希望接收以下 MIME 类型”并且仅用于请求。 Content-Type 标头表示“此消息正文采用此 MIME 类型格式化”,可用于响应和请求(当它们是消息正文时)。我会使用这种模式:

  • 在大多数路由处理程序中,将规范响应数据表示组合为res.body。这应该只是普通的 javascript 对象数据。完成后致电next()
  • 在路由器之后添加一个中间件,用于查找设置了res.body 的未发送响应,然后基于Accept 标头,将res.body 格式化为XML,或者如果客户端需要JSON,则只使用res.send(res.body)。您可以使用 res.headerSent 布尔值来测试是否发送了响应,或者只是确保 res.body 在发送时未设置。

【讨论】:

  • 您将如何检查未发送的响应?有没有可以来回转换的库?
  • BTW POST 请求确实有'Content-Type'
  • @Hadesara 所有请求都不包含Content-Type
  • @Hadesara 我不会回答你的“是否有现有的图书馆”的问题。这是一个您自己能够回答的研究问题。
  • @PeterLyons,我找不到任何进行双向转换的库(在 nodejs/javascript 世界中)。因此,张贴在这里。这是一个交流知识的论坛。
猜你喜欢
  • 1970-01-01
  • 2022-12-22
  • 2011-05-23
  • 2015-06-21
  • 1970-01-01
  • 2013-10-27
  • 2018-07-24
  • 2017-10-21
  • 1970-01-01
相关资源
最近更新 更多