2013-03-14 126 views
0

我希望支持XML和JSON Content-Type,以便将所有Rest API请求都支持到我的服务器。对此有何想法?nodejs的多种内容类型支持XML <-> JSON

我想加入中间件,以检查请求的Content-Type/Accept,如果它的XML转换成JSON并传递路线,并确保这些响应发送之前转换回XML。

所以我的问题是:

  • 是什么做它的最佳方法是什么?
  • 有没有现有的库这样做?

我不想在每个端点添加附加逻辑,也不为它创建新的端点。 Theres成为了一个更好的方法。 PS:我正在使用快递。

编辑:需求变化,我没有做只有一个办法翻译使用(JSON到XM):这个(http://goessner.net/download/prj/jsonxml/

+0

有HTTP'Accept'标头... – elmigranto 2013-03-14 21:28:44

回答

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在发送时未被设置。
+0

你会如何检查未发送的回复?有没有图书馆来回转换? – Hadesara 2013-03-14 22:06:30

+0

顺便说一句POST请求确实有'内容类型' – Hadesara 2013-03-14 22:11:05

+0

@Hadesara所有请求都不包含'Content-Type' – elmigranto 2013-03-14 22:22:58

相关问题