为什么我们需要在响应中添加.end() ?



目前在我的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')

由于所有这三个方法都将导致响应被发送,并且当响应发出时,它将拾取先前设置的状态。

相关内容

最新更新