假设以下REST资源
https://api.service.com/jobs/{id}
如果职位数据不可用,我的jboss / wildfly rest应用程序将发送 404 (无正文数据)。 200 和 404 是预期的响应代码。
服务使用者解释此结果并启动一些与此无关的相应过程。
不幸的是,如果未部署应用程序,则消费者也会获得404代码。例如,由于部署错误。此响应代码由jboss / wildfly容器发送。此时,消费者会误解响应。
那么您将如何处理这种情况?我相信容器绝不应该发送这样的响应,因为这是应用程序的工作。
最明显的解决方案是一些身体数据,以便消费者可以区分404是来自容器还是来自应用程序:
{
"error": "No job found for id ..."
}
但是,在我看来,这种解决方案并不是干净的或真正的“ restfull”。
答案 0 :(得分:1)
更好的方法是在所有情况下(在您的应用程序中)将您的状态保持为200。 这里的200表示可以访问您的应用程序。
对于所有其他错误,您可以返回所有其他状态(包括200)。
例如-200:
{
"response" : "Ok",
"responseCode" : 200
"data" : {
"jobId" : 1
}
}
例如-404:
{
"response" : "Not Found",
"responseCode" : 404
"data" : null
}
您的服务使用者可以侦听您的应用程序正在生成的响应(正文),然后可以区分容器和您的应用程序正在生成的任何错误。
这适用于您希望在应用程序中满足的所有响应消息。
我希望这对您有所帮助。