java - 使用 spring-data-rest 定义路径为 "/{resourcename}/search/"的自定义方法

标签 java spring rest spring-data-rest

我很困惑。我找不到如何将自定义“搜索”方法与在 spring-data-rest 的帮助下加载的方法一起定义。 你能回答我吗,这个框架有这种“开箱即用”的可能性吗? 如果有,你能告诉我,我在哪里可以找到它吗?

为了更深入地了解我的情况,我描述了我的问题:

class UserService {
    public String getListOfWaitingUsers() {

        return userRepository.findAll(UserSpecification.isWaiting());
    }
} 

public interface UserRepository extends PagingAndSortingRepository<User, Long>{
   Page<User> findByNameLike(@Param("name") String name, Pageable pageable);
}

我希望它是这样的:

/user/search/
        findByNameLike
        findWaitingUsers

如何实现我的规范或服务方法(存储库中没有方法)将定义路径“/resource_name/search/METHOD_NAME”(存储库方法 +(方法服务规范)

最佳答案

  • Spring Data REST 框架基于Spring Data Respository,所以你的服务类在这里可以忽略。
  • 所有不属于 CRUD/Paging Repository 的方法都公开为“搜索”方法,前提是您使用 @Param 注释对所有参数进行了注释。所以在你的情况下,你需要在 conventions outline in Spring Data commons docs 之后实现你的方法.因此,一旦您实现了 findByNameLike 方法,该方法就会公开为 ../search/findByNameLike URL。如果需要,您可以使用 @RestResource 注释自定义 rel 和路径。
  • 另请注意,理想情况下,您的 UserRepository 应该只对 User 对象以及您定义的方法起作用。在你的例子中,UserRepository 返回 Process/ProcessContext 对象?相反,它应该像下面这样

    public interface UserRepository extends PagingAndSortingRepository<User, Long>{
      Page<User> findByNameLike(@Param("name") String name, Pageable pageable);
    }
    

关于java - 使用 spring-data-rest 定义路径为 "/{resourcename}/search/"的自定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23340321/

相关文章:

java - 高效的优先级列表

spring - 未定义名为 'entityManagerFactory' 的 bean,bean 引用问题

java - Spring MongoDB 依赖错误

java - 线程 "main"javax.ws.rs.ProcessingException : javax.net.ssl.SSLProtocolException 中的异常:握手警报:unrecognized_name

请求中未接受的 Content-Type 的 HTTP 状态代码

java - 如何播放Jar文件中resources文件夹中的MP3文件?

java - 使用数组进行用户输入

web-services - WSDL 2.0、WADL 和 XRD 之间的区别?

java - Hibernate 和 Junit 测试 : rollback tests changes

java - 创建 REST API 以在 Spring Boot 中上传多部分文件数据