【发布时间】:2017-08-15 04:44:51
【问题描述】:
我知道这可能让人感觉像是重复。
When to use @RestController vs @RepositoryRestResource
但我有几件事没有在那个问题中得到解决。
-
使用
@RepositoryRestResource,默认情况下每个方法都是公开的。我觉得有点烦人。如果我在这里错了,请纠正我。比如下面这种情况@RepositoryRestResource public interface ProductRepository extends MongoRepository<Product, String> {}
如果我只想公开 findAll() 和 findOne() 而不是任何其他方法,尤其是删除。为了实现这一点,我需要做这样的事情
@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 方法相比要好得多
我认为最好使用 ResponseEntity 从 REST 端点返回任何值。但是使用 spring-data-rest 方法,我不知道该怎么做。
我找不到任何方法来对 RepositoryRestResource 公开的(不是 IT)REST 端点进行单元测试。但是使用 REST 控制器方法,我可以使用
MockServletContext、MockMvc、MockMvcBuilders测试我的 REST 端点
考虑到所有这些,使用 sping-data-rest(HATEOS 除外)是否仍然有利?
请澄清
【问题讨论】:
-
我认为将你的观点分成不同的问题会更好。
-
您好,您的意思是每个问题都有一个问题?谢谢
-
是的,通常在 SO 上找到直接问题的答案要容易得多。这也有助于其他搜索类似主题的人。
标签: spring rest spring-data spring-data-rest