nodejs XML< - >的多种内容类型支持JSON

时间:2013-03-14 21:08:57

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

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

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

所以我的问题是:

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

我不想在每个端点添加附加逻辑,也不想为它创建新的端点。 Theres必须是一个更好的方法。

PS:我正在使用快递。

编辑:要求已更改,我不会使用以下方式进行单向翻译(json到xm):[this](http://goessner.net/download/prj/jsonxml/

1 个答案:

答案 0 :(得分:1)

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

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