我编写了一个超级简单的服务器,用POST
个请求获取名称,并将名称写入文件,GET
返回所有名称,DELETE
删除名称文件。我的问题出在DELETE
方法中。当我发送205表示名称文件已删除时,JSON将包含在响应中,但是当我发送204时,表示没有要删除的文件,响应将返回空白。
以下是定义行为的方法:
function clearNames(req, res) {
fs.unlink('names.txt', function(err){
if (err) {
res.status(204).json({'success': true});
} else {
res.status(205).json({'success': true});
}
});
}
这是结果。第一个请求在名称文件存在时发送,并删除该文件。第二个是在删除文件后发送的,因此不存在要删除的文件:
$ curl -X DELETE -w ' %{http_code}' http://localhost:18080/api/names
{"success":true} 205
$ curl -X DELETE -w ' %{http_code}' http://localhost:18080/api/names
204
$
答案 0 :(得分:1)
在错误情况下,您发送状态204,这意味着没有内容",因此客户在此之后不会期望任何内容。将状态更改为包含响应正文的内容,它应该可以正常工作。
来自specs:
的引用204响应绝不能包含消息体,因此总是如此 由标题字段后的第一个空行终止。
205状态不应该包括一个正文,所以我建议你也改变它。