如何自定义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。