目前在我的web服务器上使用express构建一个RESTful API,以及一些路由,例如使用mongoose ex删除文档的路由。await Note.findByIdAndRemove(request.params.id) response.status(204).end()
使用end()
发送响应状态
为什么需要添加.end()
?在这些情况下,为什么不能发送response.status(204)
对于一些返回json的响应,response.status(201).json
工作得很好
只有使用Express或http接口的特定方法才会发送响应。一些方法,如.status()
或.append()
或.cookie()
,只设置在实际发送响应时将要使用的输出响应的状态——它们实际上并不发送响应本身。因此,当使用这些方法时,您必须使用一些实际发送响应的方法,例如.end()
。
在你的具体的例子:
response.status(204)
您可以使用实际发送响应的Express版本:
response.sendStatus(204)
如果您选择使用.status()
,那么在Express文档中,您必须使用导致发送响应的其他方法。以下是.status()
的Express文档中的示例:
res.status(403).end()
res.status(400).send('Bad Request')
res.status(404).sendFile('/absolute/path/to/404.png')
由于所有这三个方法都将导致响应被发送,并且当响应发出时,它将拾取先前设置的状态。