Java 处理此REST API端点错误的最佳方法?

Java 处理此REST API端点错误的最佳方法?,java,spring,rest,api,spring-boot,Java,Spring,Rest,Api,Spring Boot,假设我有一个端点来检索公司: GET/companys/:id 如果我点击了GET/companys/16,但没有ID为16的公司,则返回404错误: “ID为16的公司不存在。” 如果公司16不存在,GET/companys/16/用户的正确响应是什么?我会返回与上面相同的404还是一个空数组?如果公司不存在,与该公司关联的用户也不存在。因此,返回404适合这种情况。这个问题完全是主观的,取决于您试图做什么。 通常(IMO),如果应该存在的东西不存在,您应该只返回404错误 由于您正试图获得一

假设我有一个端点来检索公司:

GET/companys/:id

如果我点击了
GET/companys/16
,但没有ID为16的公司,则返回404错误:

“ID为16的公司不存在。”


如果公司16不存在,
GET/companys/16/用户的正确响应是什么?我会返回与上面相同的404还是一个空数组?

如果公司不存在,与该公司关联的用户也不存在。因此,返回
404
适合这种情况。

这个问题完全是主观的,取决于您试图做什么。 通常(IMO),如果应该存在的东西不存在,您应该只返回404错误

由于您正试图获得一家公司,因此实际使用参数将用户指向URL将是一种糟糕的UI设计。适当的(同样是IMO)RESTAPI体系结构是基于对象实体(在本例中为公司)分离控制器和映射,然后在前端使用AJAX调用(最有可能使用按钮)和HttpServletResponse从映射中获取所需的任何数据。然后,您将使用响应在前端显示响应。如果数据存在,则显示公司数据,如果不存在,则显示一个空数组,表示该公司不存在,并在前端适当地显示文本,表示搜索结果为空


你需要进一步澄清你的问题

这取决于你的要求。如果你需要抛出一个异常,你就会抛出一个异常,如果你需要返回一个空列表/数组,你就会返回一个空列表/数组。正如@Stultuske所说,这取决于你的业务逻辑。在这种情况下,返回一个404也更符合逻辑。设想一个网站页面层次结构,您希望在其中访问一个页面。如果此页面不存在,很明显,所有子路径(/page/subpage)都将不存在。感谢您的回复,很抱歉我的问题不够清楚。它实际上与UI设计没有任何关系,我的问题是关于最佳REST实践。我看到默认情况下JavaSpring将返回一个空数组,不知道这是否是有意的。如果公司不存在,返回一个空的用户数组似乎很奇怪,因为这会向我表明公司存在,但没有任何用户?我找不到任何关于处理这个案件的REST指南,所以来这里询问其他人对如何处理这种情况的意见