SpringMVC层次URI模板



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

/文件夹/id/children/id/children/。。。id/children

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

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

任何帮助都将不胜感激。

我认为没有一种很好的方法可以用Spring实现这一点。我能想到两种选择,但都有点难看。。。

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

  2. @RequestMapping("/children/{restOfUrl:+}")模板模式中使用regex(请参阅文档),并在单个String变量中捕获整个路径。然后,你需要自己的逻辑来拆分重复单元。这是一个不太灵活的工具(捕获从/children/@RequestMapping中的:+开始的所有内容很容易被遗漏,这使得其他人更难计算出哪些URI与哪些控制器方法一起使用

最新更新