我想为我的服务器的所有Rest API请求支持XML和JSON Content-Type。有什么想法吗?
我正在考虑添加中间件来检查请求的Content-Type
/ Accept
,如果它的XML将其转换为JSON并将其传递给路由,并确保将这些响应转换回来发送前的XML。
所以我的问题是:
我不想在每个端点添加附加逻辑,也不想为它创建新的端点。 Theres必须是一个更好的方法。
PS:我正在使用快递。编辑:要求已更改,我不会使用以下方式进行单向翻译(json到xm):[this](http://goessner.net/download/prj/jsonxml/)
答案 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
未设置。