为自定义存储库方法指定DELETE HTTP方法

时间:2019-07-29 15:41:30

标签: java spring spring-data-rest

我需要添加自定义delete方法并将其公开到spring数据其余存储库。 如何指定DELETE方法,因为默认情况下spring-data-rest像GET一样公开它。

@RepositoryRestResource(path = "documents")
public interface DocumentRepository extends JpaRepository<DocumentEntity, Long> {

  void deleteByDate(@Param("date") LocalDate date);
}

1 个答案:

答案 0 :(得分:1)

您添加的方法将被视为“搜索”资源(如从公开路径/documents/search/deleteByDate?...可以看到的),并且如文档所述:

  

5.5.1。支持的HTTP方法   由于搜索资源是只读资源,因此仅支持GET方法。

https://docs.spring.io/spring-data/rest/docs/3.1.9.RELEASE/reference/html/#repository-resources.search-resource

然后的解决方案是创建一个标准的Spring MVC控制器来处理此自定义操作:

@DeleteMapping("/documents/deleteByDate")
public ResponseEntity<> deleteDocumentByDate(@RequestParam("date") LocalDate date){
    ....
}