Spring Boot Starter Data Rest从根URI更改存储库的URL

时间:2014-04-29 23:23:25

标签: rest spring-boot

在这里的spring.io示例之后:http://spring.io/guides/gs/accessing-data-rest/用于公开存储库作为休息Web服务工作正常,但我看不到如何更改公开服务的URL。关于注释参数的含义,API文档有点模糊,也许假设有一些先验知识。

我想要的 - 在http://localhost:8080/api/people访问人员存储库的HATEOAS服务。我想仅使用注释来实现此URL,而不是使用上下文根或类似内容。我尝试了以下存储库注释:

  • @RepositoryRestResource(collectionResourceRel = "api/people", path = "people")
  • @RepositoryRestResource(collectionResourceRel = "people", path = "api/people")
  • @RepositoryRestResource(collectionResourceRel = "api/people", path = "api/people")

这些都不起作用。

我知道我可能已经错过了显而易见的,非常感谢能够指出它的人。

3 个答案:

答案 0 :(得分:9)

Spring Boot 1.2开始,您可以设置此属性:

spring.data.rest.baseUri=api

可替换地:

spring.data.rest.base-uri=api

(Spring Boot使用relaxed binding系统)

注意:我发现如果您使用自定义配置扩展RepositoryRestMvcConfiguration,则该属性不会生效。有关更多信息,请参阅:

https://github.com/spring-projects/spring-boot/issues/2392

一旦发布了下一版本的Spring Boot(在1.2.1之后),解决方案将是扩展RepositoryRestMvcBootConfiguration

答案 1 :(得分:0)

从Spring Boot 1.4.3开始,代码应为:

spring.data.rest.base-path:api

(我认为自1.2.3以来不推荐使用baseUri)

答案 2 :(得分:0)

虽然我无法使用注释@RepositoryRestResourceCrudRepository相结合来更改REST服务的基本路径,但我设法使用JpaRepository和自定义来完成带注释@RequestMapping的控制器。

存储库可能类似于:

@Repository
interface PersonRepository : JpaRepository<Person, Long>

控制器:

@RestController
@RequestMapping("/api/people")
class PersonRestController(private val personRepository: PersonRepository) {
    ...

另一方面,您可以更改所有REST服务的基本路径,在项目的 application.properties 文件中修改它。添加以下行:

# DATA REST (RepositoryRestConfiguration)
spring.data.rest.base-path = api

使用您希望在网址中使用的路径更改api。第一行是注释,因此,它不是强制性的,但对于标记未来引用的配置值的性质很有用。

您可以在文档的Appendix A中找到Spring Boot 2.0.1的所有常见应用程序属性。