[英]How do you handle 404 errors sent by a container and not by application
假设以下REST资源
https://api.service.com/jobs/{id}
如果作业数据不可用,我的jboss / wildfly rest应用程序将发送404 (无正文数据)。 200和404是预期的响应代码。
服务使用者解释此结果并启动一些与此无关的相应过程。
不幸的是,如果未部署该应用程序,那么使用者也将获得404代码。 例如,由于部署错误。 此响应代码由jboss / wildfly容器发送。 在这一点上,消费者会误解响应。
那么您将如何处理这种情况? 我相信容器绝不应该发送这样的响应,因为这是应用程序的工作。
最明显的解决方案是一些正文数据,以便消费者可以区分404是来自容器还是应用程序:
{
"error": "No job found for id ..."
}
但是,在我看来,这种解决方案并不是干净的或真正的“ restfull”。
更好的做法是在所有情况下(在您的应用程序上)将您的状态保持为200。 这里的200表示可以访问您的应用程序。
对于所有其他错误,您可以返回所有其他状态(包括200)。
例如-200:
{
"response" : "Ok",
"responseCode" : 200
"data" : {
"jobId" : 1
}
}
例如-404:
{
"response" : "Not Found",
"responseCode" : 404
"data" : null
}
您的服务使用者可以监听您的应用程序正在生成的响应(正文),然后可以区分容器和您的应用程序正在生成的任何错误。
这适用于您希望在应用程序中满足的所有响应消息。
希望对您有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.