我已经开发了一组RESTful网络服务,我正试图以有用的方式为用户处理错误。
我遇到了一个错误编码帐户资源的URL的情况,并且遇到了404错误。我预计会出现错误,因为服务器中没有响应的@Path注释。但是自从我收到404后,我向用户报告说他们没有找到他们的帐号。
我想从纯粹的RESTful观点来看,404“有意义”,因为/ server / foo / 123450没有“资源”(当资源的正确路径为/ server / bar / 123450时)。但/ server / thisPathHasNoHopeOfExisting / 123450也响应404。
帐号00000不存在的/ server / bar / 000000响应404。
如何告诉我的用户正确的事情? (/ server / thisPathHasNoHopeOfExisting / xxxxxx是一个真正的服务器错误,一个500系列,因为服务器永远不会回答这个问题) - 有没有办法让我的泽西服务有点少休息 - 迂腐?
答案 0 :(得分:0)
How can I tell my user the right thing?
404 是正确的。
(that /server/thisPathHasNoHopeOfExisting/xxxxxx is a true server error
在Jersey / JAX-RS中,您可以使用UriBuilder构建URI - 您应该这样做。然后就没有'错误编码URI'。
您可以使用JAX-RS的precedence规则来创建某种全能页面,但我不确定它是否会非常有效。我的意思是,您如何区分您想要存在但可能不存在的资源(例如,不存在的帐户)和您不打算存在的资源?您的问题源于遗漏错误,因此您可能设想的任何解决方案也会继承此类可能的错误。使用UriBuilder。