NodeJS Express:json未包含在响应中

时间:2017-09-12 18:13:44

标签: json node.js

我编写了一个超级简单的服务器,用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
$

1 个答案:

答案 0 :(得分:1)

在错误情况下,您发送状态204,这意味着没有内容",因此客户在此之后不会期望任何内容。将状态更改为包含响应正文的内容,它应该可以正常工作。

来自specs

的引用
  

204响应绝不能包含消息体,因此总是如此   由标题字段后的第一个空行终止。

205状态不应该包括一个正文,所以我建议你也改变它。