SpringMVC分层URI模板

时间:2012-10-09 12:43:52

标签: rest spring-mvc

我正在使用SpringMVC来实现REST API。在某些时候,我需要一个分层URI:

/文件夹/ ID /儿童/ ID /儿童/ ... ID /儿童

具有可变深度。使用RestEasy可以递归地从top方法返回Resource。有没有办法在SpringMVC中实现它?否则你有什么建议吗?

关键点是,子ID在同一级别是唯一的,因此:该文件夹不会有2个具有相同ID的子项,但在整个树中,将存在多个具有相同ID的项目。

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:2)

我不认为有一个很好的方法可以用Spring做到这一点。我可以想到两种选择,但两者都有点难看......

  1. 编写单独的控制器方法来捕获每个"深度"你会遇到你的URI模式,例如@RequestMapping("/children/{id1}/children/{id2}")。然后,您可以调用常用方法来处理可能是递归的捕获的id。如果max" depth"我可能会选择这个选项。只有3,因为代码至少对其他开发人员来说很容易阅读/理解,复制和粘贴的数量将是最小的。

  2. @RequestMapping("/children/{restOfUrl:+}")模板模式(see docs)中使用正则表达式,并在单个String变量中捕获整个路径。然后,您需要自己的逻辑来拆分重复单元。这是一种较为灵活的工具(捕获以/children/开头的所有内容并且:+中的@RequestMapping很容易错过,这使其他人尝试更难找出哪些URI与哪种控制器方法有关。