我知道这可能会感觉像是这个问题的重复。
但我有一些问题没有在那个问题中得到解答。
With
@RepositoryRestResource
, every method is by default exposed. Which I feel is a bit annoying. Correct me if I am wrong here. For example in the below case@RepositoryRestResource public interface ProductRepository extends MongoRepository<Product, String> {}
如果我只想公开findAll()和findOne()方法,而不是其他任何方法,特别是delete。为了实现这一点,我需要做如下操作
@RepositoryRestResource
public interface ProductRepository extends MongoRepository<Product, String> {
@RestResource(exported = false)
@Override
default void delete(String s) {
}
@RestResource(exported = false)
@Override
default void delete(Product product) {
}
@RestResource(exported = false)
@Override
default void delete(Iterable<? extends Product> iterable) {
}
@RestResource(exported = false)
@Override
default void deleteAll() {
}
}
我认为这段代码中有很多不必要的代码,使用Rest Controller方法会更好。
我认为最好从REST端点返回任何值都使用ResponseEntity。但是使用spring-data-rest方法,我不确定如何做到这一点。
我找不到任何方法来单元测试(非IT)RepositoryRestResource公开的REST端点。但是使用REST控制器方法,我可以使用MockServletContext,MockMvc和MockMvcBuilders测试我的REST端点。
鉴于所有这些,除了HATEOS之外,仍然有使用sping-data-rest的优势吗?请澄清。