0

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

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

所以我的问题是:

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

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

PS:我用的是快递。

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

4

1 回答 1

1

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

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