小编典典

Spring Data Rest-有没有办法限制支持的操作?

spring-boot

我想在Spring(SpringBoot)应用程序中将数据库中的数据公开为Restful API。Spring Data Rest似乎完全适合此活动。

该数据库是只读的,可以满足我的应用程序需求。默认提供所有HTTP方法。有没有可以用来限制(实际上是阻止)其他方法公开的配置?


阅读 342

收藏
2020-05-30

共1个答案

小编典典

从有关隐藏库CRUD方法的Spring文档中:

16.2.3。隐藏存储库CRUD方法

如果您不想在CrudRepository上公开保存或删除方法,则可以使用@RestResource(exported =
false)设置,方法是覆盖要关闭的方法,并将注释放在覆盖的版本上。例如,为防止HTTP用户调用CrudRepository的delete方法,请覆盖所有方法并将注释添加到重写的方法中。

@RepositoryRestResource(path = "people", rel = "people")
interface PersonRepository extends CrudRepository<Person, Long> {

  @Override
  @RestResource(exported = false)
  void delete(Long id);

  @Override
  @RestResource(exported = false)
  void delete(Person entity);
}

重要的是,您必须覆盖这两种删除方法,因为导出程序当前使用某种天真的算法来确定要使用哪种CRUD方法,以提高运行时性能。当前无法关闭带有ID的delete版本,但要导出带有实体实例的版本。目前,您可以导出删除方法,也可以不导出。如果要关闭它们,则请记住,必须使用export
= false注释这两个版本。

2020-05-30