Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

String Hateoas link to a void method

I am working with Spring Hateoas for HAL standards in HTTP response. I have a HTTP DELETE method in my controller which returns nothing (void). And in the response for same entity I want to provide a link to delete a resource. I tried to do with following code but it gives error

Cannot resolve method linkTo(void)

    resource.add(linkTo(
            methodOn(DokumenteController.class)
                    .loeschenEinDokument(filenetDokumentZuordnung.getDokumentId()))
                            .withRel("download"));

Is there any way I can add a link to a method which returns void?

like image 202
Sagar Varpe Avatar asked Dec 07 '16 12:12

Sagar Varpe


2 Answers

Don't return void. Return ResponseEntity<Void> instead.

Chances are, that you have to set some headers anyway, even if you don't return a message body. Or you want to set a status code.

If your controller has an appropriate request mapping you can also do the following:

 resource.add(linkTo(DokumenteController.class)
             .slash(filenetDokumentZuordnung.getDokumentId())
             .withRel("download"));
like image 68
a better oliver Avatar answered Nov 17 '22 22:11

a better oliver


I doubt it's possible to link to a DELETE route.

Hateoas is allowing you to discover your REST API, but a REST API means that in order to delete the document available at /document/42 you should call the same route, but with a DELETE method.

Basically, you don't have to make a link to your deletion method, because it is implicit that this is the way to delete your document.

like image 3
AntoineB Avatar answered Nov 17 '22 23:11

AntoineB