1

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

/文件夹/id/children/id/children/...id/children

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

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

任何帮助将不胜感激。

4

1 回答 1

2

我认为Spring没有很好的方法来做到这一点。我能想到两种选择,但都有点难看......

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

  2. @RequestMapping("/children/{restOfUrl:+}")在模板模式中使用正则表达式(请参阅文档)并在单个字符串变量中捕获整个路径。然后,您需要自己的逻辑来分离重复单元。就作为一个生硬的工具而言,这不太灵活(捕获从开头/children/:+所有内容@RequestMapping很容易错过,这使得其他人试图找出哪些 URI 与哪些控制器方法一起使用变得有点困难。

于 2012-10-09T22:59:14.970 回答