在这里的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")
这些都不起作用。
我知道我可能已经错过了显而易见的,非常感谢能够指出它的人。
答案 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)
虽然我无法使用注释@RepositoryRestResource
与CrudRepository
相结合来更改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的所有常见应用程序属性。