Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NodeJS Express:响应中未包含json_Json_Node.js - Fatal编程技术网

NodeJS Express:响应中未包含json

NodeJS Express:响应中未包含json,json,node.js,Json,Node.js,我编写了一个超级简单的服务器,它接受带有名称的POST请求,并将名称写入文件,GETs返回所有名称,DELETEs删除名称文件。我的问题在于DELETE方法。当我发送205表示名称文件已被删除时,JSON包含在响应中,但当我发送204表示不存在要删除的文件时,响应返回为空 以下是定义行为的方法: function clearNames(req, res) { fs.unlink('names.txt', function(err){ if (err) {

我编写了一个超级简单的服务器,它接受带有名称的
POST
请求,并将名称写入文件,
GET
s返回所有名称,
DELETE
s删除名称文件。我的问题在于
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
$

在错误情况下,您发送的是状态204,这意味着“无内容”,因此客户机不希望在此之后有任何内容。将状态更改为包含响应主体的状态,它应该可以工作

引自:

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


205状态不应该包括正文,因此我建议您也更改它。

您应该使用
404未找到
响应状态代码,而不是
204无内容
。除此之外,为什么需要json,这在两种情况下都是一样的,响应状态代码足以确定请求的结果。