2014-12-09 4 views
14

Zur Zeit bin ich auszusetzen ein paar Spring Data Repositories als RESTful Dienste mischen. Wenn Sie traf meine erste Endpunkt zeigt auch alle Spring Data Repositories ich ausgesetzt, wie folgt aus:Wie durch Anmerkungen versehen sie mit @RepositoryRestResource wie diese Spring Data-Repositorys und Federbasis Controller

{ 
    _links: { 
     thing1: { 
     href: "http://localhost:8080/thing1{?page,size,sort}", 
     templated: true 
     }, 
     thing2: { 
     href: "http://localhost:8080/thing2" 
     } 
    } 
} 

Jetzt habe ich einige Endpunkte ich kann machen möchten nicht durch Spring Data Repositories dargestellt werden, so dass ich bin mit ein RestController.

Hier ist ein einfaches Beispiel:

@RestController 
@ExposesResourceFor(Thing3.class) 
@RequestMapping("/thing3") 
public class Thing3Controller { 

    @Autowired 
    EntityLinks entityLinks; 

    @Autowired 
    Thing3DAO thing3DAO; 

    //just assume Thing3.class extends ResourceSupport. I know this is wrong, but it makes the example shorter 
    @RequestMapping(value = "/{id}", produces = "application/json") 
    Thing3 thing3(@PathVariable("id") String id) 
    { 
     Thing3 thing3 = thing3DAO.findOne(id);   

     Link link = entityLinks.linkToSingleResource(Thing3.class, id); 
     thing3.add(link); 

     return thing3; 
    } 
} 

Nun, wenn ich diese App laufen und gehen Sie zu:

http://localhost:8080/thing3/{id} 

ich eine JSON-Repräsentation des Thing3 tun bekommen mit einem Link zu sich selbst, dass funktioniert wie erwartet.

Was ich herausfinden möchte, ist, dass der erste Endpunkt auch diesen Controller beschreibt. Ich mag im Grunde diese:

{ 
    _links: { 
     thing1: { 
     href: "http://localhost:8080/thing1{?page,size,sort}", 
     templated: true 
     }, 
     thing2: { 
     href: "http://localhost:8080/thing2" 
     }, 
     thing3: { 
     href: "http://localhost:8080/thing3" 
     } 
    } 
} 

Was muß ich tun, um meine Basis Endpunkt erhalten einen Link zu diesen Controller zu haben?

+0

möglich Duplikat [Custom Antwort für root Anfrage int Früjahr REST HATEOAS mit beiden RepositoryRestResource -s und reguläre Controller] (http://stackoverflow.com/questions/25783487/custom-response-for-root-request-int-the-spring-rest-hateoas-with-both-repositor) – zeroflagL

+1

Wie bist du gekommen @RestController arbeiten mit Spring-Hassoas? Außerdem versuche ich zu verstehen, woher die "thing3.add" -Methode stammt. Wie verwalten Sie eine Sammlung von Entitäten? – BigDong

Antwort

Verwandte Themen