Spring Data Rest Custom Controller

百般思念 提交于 2019-12-12 08:48:20

问题


I have requirement where in which i need to override the delete functionality from the rest Resource using a custom controller.here is the code for restResource

@RepositoryRestResource
    public interface SampleRepository extends JpaRepository<Sample,Long>{
List<Sample> findBySampleNumber(@Param("sampleNumber") String sampleNumber);
    }

i have created a a custom controller which overides only delete fuctionality

@RepositoryRestController
@RequestMapping("/api/samples")
public class SampleController{
    @Autowired
    SampleRepository sampleRepository;

    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
    @ResponseBody
    public void delete(@PathVariable Long id) {
        //do some custom logic here
        //then delete the sample
        //sampleRepository.delete(id);

    }

However if now try to make a GET api/samples/1(someId) or look up some search functionality on the RepositoryRestResource, I see the following error

"description": "Request method 'GET' not supported"

is there way to override only one HTTP verb have the rest of the functionality coming up from the repository.

However if i comment public void delete from the controller i am able to access all the crud and Search operations

Has Anyone encountered such an issue

I am using SPRING_DATA_REST-2.5.1-Release


回答1:


You have to use the RequestMapping annotation at the method level only.




回答2:


You need to define your controller as

@RepositoryRestController
public class SampleController{
    @Autowired
    SampleRepository sampleRepository;

    @RequestMapping(value = "/api/samples/{id}", method = RequestMethod.DELETE)
    public void delete(@PathVariable Long id) {

    }

As well as spring data provide different events to perform before and after the domain create,save and delete.

Refer http://docs.spring.io/spring-data/rest/docs/current/reference/html/#events



来源:https://stackoverflow.com/questions/37079916/spring-data-rest-custom-controller

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!