Spring REST方法类型的最佳实践

时间:2015-05-15 12:52:27

标签: java spring rest

我正在构建Spring RESTfull服务,并且我有以下方法根据给定的邮政编码检索Place对象:

SELECT TOP 10 w0_.id AS id0, w0_.last_activity_datetime AS last_activity_datetime1
FROM wall_post w0_
  LEFT JOIN likes l1_ ON  w0_.id = l1_.wall_post_id
  LEFT JOIN share s2_ ON w0_.id = s2_.wall_post_id
  LEFT JOIN comments c3_ ON w0_.id = c3_.wall_post_id 
  LEFT JOIN ilook_user i4_ ON w0_.from_user_id = i4_.id 
  LEFT JOIN socialise_album s5_ ON w0_.socialise_album_id = s5_.id 
  INNER JOIN socialise_photo s6_ ON s5_.id = s6_.socialise_album_id 
WHERE ((w0_.from_user_id = 1 AND w0_.wall_type = 2) 
   OR (w0_.from_user_id IN (1) AND w0_.wall_type = 2)  
   OR (s2_.ilook_user_id IN (1) AND w0_.wall_type = 2)) 
  AND i4_.account_closed_on IS NULL 
GROUP BY w0_.id, w0_.last_activity_datetime 
ORDER BY w0_.last_activity_datetime DESC

最佳做法是返回类型" Place"?我想这对于错误处理来说很难吗?

2 个答案:

答案 0 :(得分:1)

将最新版本的Spring用于RESTfull Web服务我确实相信返回' Object'这是一种很好的做法,因为它可以让您简化代码并具体了解您返回的内容。我认为这是强烈输入您的API响应。

错误处理的一个好习惯是使用spring提供的控制器建议实用程序。

阅读:

https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

这允许您在任何服务层抛出异常,并产生一个很好的有用的错误响应。

答案 1 :(得分:0)

更好的做法是创建一个只包含您将在前端使用的属性的数据传输对象。

使用适当的JS框架,您可以轻松地进行适当的错误处理。 (例如,您可以在AngjularJs中定义一个服务,用于定义DTO的字段)。

另外,您还可以返回placeService.placeByZip(zipCode);

正如robinsio建议添加控制器建议是一种好习惯。您可以将状态设置为某些http代码(例如HttpStatus.conflict)并具有异常处理程序(例如BaseServiceException),如果您定义的某些验证规则被破坏,您可以将其放入场所服务中。

控制器建议可以返回一个映射,您可以在相应的http状态代码的情况下以一致的方式处理该映射(假设在接口中出现模式以通知您从基本服务异常发送的消息)。 / p>