我想在Spring(SpringBoot)应用程序中将数据库中的数据公开为Restful API。Spring Data Rest似乎完全适合此活动。
该数据库是只读的,可以满足我的应用程序需求。默认提供所有HTTP方法。有没有可以用来限制(实际上是阻止)其他方法公开的配置?
从有关隐藏库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注释这两个版本。
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注释这两个版本。