2016-12-07 4 views
1

Je travaille avec Spring Hateoas pour les normes HAL dans la réponse HTTP. J'ai une méthode HTTP DELETE dans mon contrôleur qui ne retourne rien (void). Et dans la réponse pour la même entité, je veux fournir un lien pour supprimer une ressource. J'ai essayé de le faire avec le code suivant, mais il donne l'erreurChaîne Hateoas lien vers une méthode vide

ne peut pas résoudre la méthode linkto (void)

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

Est-il possible que je peux ajouter un lien vers une méthode qui retourne void?

+0

Voir http://stackoverflow.com/questions/30574431/how-to-create-link-pointing-to- spring-controller-action-that-returns-void, pourrait aider, bien que la réponse unique n'ait pas été acceptée ni mise à jour ... – sp00m

Répondre

5

Ne pas retourner void. Renvoyez ResponseEntity<Void> à la place.

Les chances sont, que vous devez définir des en-têtes de toute façon, même si vous ne renvoyez pas un corps de message. Ou vous voulez définir un code d'état.

Si votre contrôleur a un mappage de demande appropriée, vous pouvez également effectuer les opérations suivantes:

resource.add(linkTo(DokumenteController.class) 
      .slash(filenetDokumentZuordnung.getDokumentId()) 
      .withRel("download")); 
2

Je doute qu'il soit possible de lier à une route DELETE. Hateoas vous permet de découvrir votre API REST, mais une API REST signifie que pour supprimer le document disponible au /document/42, vous devez appeler le même chemin, mais avec une méthode DELETE. Fondamentalement, vous n'avez pas besoin de faire un lien vers votre méthode de suppression, car il est implicite que c'est le moyen de supprimer votre document.