代码之家  ›  专栏  ›  技术社区  ›  IDskxo

为什么我们需要添加。响应的end()?

  •  0
  • IDskxo  · 技术社区  · 2 年前

    目前在我的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 工作正常

    1 回复  |  直到 2 年前
        1
  •  0
  •   jfriend00    2 年前

    只有使用Express或http接口的某些方法才会发送响应。一些方法,例如 .status() .append() .cookie() 仅在实际发送响应时使用的传出响应上设置状态-它们实际上并不发送响应本身。因此,在使用这些方法时,您必须使用一些实际发送响应的方法,例如 .end() .

    在您的具体示例中:

    response.status(204)
    

    您可以使用实际发送响应的Express版本:

    response.sendStatus(204)
    

    如果您选择使用 .状态() 相反,从Express文档中,您必须使用其他方法来发送响应。以下是来自 Express documentation 对于 .状态()

    res.status(403).end()
    res.status(400).send('Bad Request')
    res.status(404).sendFile('/absolute/path/to/404.png')
    

    由于这三种其他方法都将导致发送响应,并且当响应发出时,它将拾取之前设置的状态。