如何自定义Spring Data REST以使用存储库资源的多段路径?

我正在使用Spring Data JPA和Spring Data REST开发基于组件的CRUD应用程序。 我有几个组件。 例如, 系统组件具有User模型和UserRepository 。 组件由包名称区分。 例如com.example.app.

因此,为了使我的REST API看起来更干净,我需要实现API URL,如下所示。

host:8080//

例如

host:8080/system/users

我在我的存储库中执行了以下操作

 @RepositoryRestResource(collectionResourceRel = "users", path = "system/users") public interface UserRepository extends PagingAndSortingRepository { ... } 

当我转到http://localhost:8080时,会生成以下内容

 { "_links": { "users": { "href": "http://localhost:8080/system/users{?page,size,sort}", "templated": true }, ... 

但是当我转到http://localhost:8080/system/users

它给出了一个错误

5月22日星期五17:56:37 IST 2015出现意外错误(type = Not Found,status = 404)。 没有消息可用

注意 :如果我将路径映射到system-users然后它工作正常,但是当我在路径中使用/system/users ,它会中断并给出错误。

TL;博士

不支持。

细节

一般来说:不要专注于设计URL。 根据定义,URI的结构对REST客户端无关紧要:

在任何时候,服务器或客户端软件都不需要知道或理解URI的含义 – 它们只是作为一个管道,资源的创建者(人类命名机构)可以通过该管道将表示与由表示的语义相关联。 URI。

(来自Roy Fielding – 建筑风格和基于网络的软件架构设计 – 第6.2.4节 )

如果您遵循该标准,您将负责选择关系名称,设计您公开的资源的表示等。

也就是说,目前不支持您所寻找的内容。 如果您认为添加此function是值得的(我认为不是,由于上面给出的论点),请随时在我们的错误跟踪器中打开一张票。

由于Spring MVC映射的工作方式,实现起来可能相当棘手,尤其是奇异路径段和非奇异路径段的映射组合可能会导致一些歧义。 所有这些使得这个请求不太可能得到跟进。

我认为这个(或类似的)问题已在stackoverflow上得到解答。

使用自定义RepositoryRestMvcConfiguration类设置基本uri。