Express / node.js 204 HTTP代码响应问题

这是我的代码:

.put(function(req, res) { User.findById(req.params.user_id, function(err, user) { if(err) return res.send(err); user.dateEdited = new Date(); user.save(function(err) { if(err) return res.send(err); return res.status(204).json(customHTTPcodeReponses.updated(user)) }); }); }); 

我的中间件的一部分叫做customHTTPcodeReponses

 updated: function(data) { return { code: 204, status: 'Success', message: 'Resource updated (or soft deleted)', data: data }; } 

我想,204不应该返回任何数据,所以我没有得到任何回报。 但是我希望有这些数据来看看真正发生了什么变化。 那我该如何处理响应码呢?

请记住,如果我使用

 res.status(200).json(customHTTPcodeReponses.updated(user)) 

显示数据。

如果您需要一些额外的解释,请询问。

       

网上收集的解决方案 "Express / node.js 204 HTTP代码响应问题"

是的,你是对的。 这个http状态不允许消息,因为这意味着“无内容”。 如果您发送内容,请使用其他状态。 详情请看文档: http : //www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 。 有一部分:“204响应不能包含一个消息体,因此总是被头字段后面的第一个空行终止。

如果你想发送的不是内容,而是元数据与附加信息,在这个文件中有一部分:“响应可能包含新的或更新的元信息forms的实体标题,如果存在应该与所请求的变体相关联。 我认为这是你的问题的正式答案。

如果你不那么正式,使用元数据作为内容的状态'200'。

编辑:在标题中发送数据:

 res.header(field, [value]) 

很简单。 如果您需要返回一些数据,只需使用返回码200并返回该数据。 如果你不需要发回任何数据,使用204.你可以设置标题为204,以指示操作状态或像位置的url,返回代码201,但我不知道这是一个好主意。