繁体   English   中英

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

[英]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 (无正文数据)。 200404是预期的响应代码。

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

不幸的是,如果未部署该应用程序,那么使用者也将获得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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM