如何处理容器而非应用程序发送的404错误

时间:2018-10-13 18:16:57

标签: java spring jboss http-status-code-404 wildfly

假设以下REST资源

https://api.service.com/jobs/{id}

如果职位数据不可用,我的jboss / wildfly rest应用程序将发送 404 (无正文数据)。 200 404 是预期的响应代码。

服务使用者解释此结果并启动一些与此无关的相应过程。

不幸的是,如果未部署应用程序,则消费者也会获得404代码。例如,由于部署错误。此响应代码由jboss / wildfly容器发送。此时,消费者会误解响应。

那么您将如何处理这种情况?我相信容器绝不应该发送这样的响应,因为这是应用程序的工作。

最明显的解决方案是一些身体数据,以便消费者可以区分404是来自容器还是来自应用程序:

{
   "error": "No job found for id ..."
}

但是,在我看来,这种解决方案并不是干净的或真正的“ restfull”。

1 个答案:

答案 0 :(得分:1)

更好的方法是在所有情况下(在您的应用程序中)将您的状态保持为200。 这里的200表示可以访问您的应用程序。

对于所有其他错误,您可以返回所有其他状态(包括200)。

例如-200:

{
     "response" : "Ok",
     "responseCode" : 200
     "data" : {
               "jobId" : 1
      }
}

例如-404:

{
     "response" : "Not Found",
     "responseCode" : 404
     "data" : null
}

您的服务使用者可以侦听您的应用程序正在生成的响应(正文),然后可以区分容器和您的应用程序正在生成的任何错误。

这适用于您希望在应用程序中满足的所有响应消息。

我希望这对您有所帮助。