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,这在两种情况下都是一样的,响应状态代码足以确定请求的结果。