2014-04-17 4 views

Antwort

14

Dies kann durch Implementierung ResourceProcessor<RepositoryLinksResource> durchgeführt werden.

Code-Schnipsel Nach fügt hinzu: "/ others", um die Root-Verzeichnis

{ 
    "rel": "others", 
    "href": "http://localhost:8080/api/others" 
} 

zu Ihrem Root-Verzeichnis

@Controller 
@ExposesResourceFor(Other.class) 
@RequestMapping("/others") 
public class CustomRootController implements 
     ResourceProcessor<RepositoryLinksResource> { 

    @ResponseBody 
    @RequestMapping(method = RequestMethod.GET) 
    public ResponseEntity<Resources<Resource<Other>>> listEntities(
      Pageable pageable) throws ResourceNotFoundException { 
      //... do what needs to be done 
    } 

    @Override 
    public RepositoryLinksResource process(RepositoryLinksResource resource) { 
     resource.add(ControllerLinkBuilder.linkTo(CustomRootController.class).withRel("others")); 

     return resource; 
    } 
} 

hinzufügen sollten Links

+1

Wie kann ich dies für eine nicht Controller-Verbindung tun? (Speziell möchte ich die Abmeldung der Spring Security hinzufügen) – xenoterracide

+0

@xenoterracide vielleicht mit einem '@RequestMapping ("/logout ")' auf dem Controller und dann ein '@RequestMapping (method = RequestMethod.POST) public logout() {// do Logout} 'Methode. Was meinst du mit Nicht-Controller-Link? – aycanadal

+0

@aycanadal Ich bin ziemlich zuversichtlich, dass ich das irgendwann herausgefunden habe, aber ich habe einen Filter, den ich verlinken muss, weil Federsicherheit – xenoterracide

0

ich nach einer Antwort auf die gesucht haben gleiches Problem, aber der Schlüssel ist: Ich habe keinen Controller. Meine URL verweist auf etwas, das in einem Auth-Filter erstellt wurde. Was für mich funktionierte, ist eine RootController zu erstellen, die keine Methoden hat, und verwenden Sie sie für den Aufbau von Links in der ResourceProcessor Implementierung.

@RestController 
@RequestMapping("/") 
public class RootController {} 

Dann wird die Verbindung mit dem leeren Controller eingefügt.

@Component 
public class AuthLinkProcessor implements ResourceProcessor<RepositoryLinksResource> { 

    @Override 
    public RepositoryLinksResource process(RepositoryLinksResource resource) { 
     resource.add(
       linkTo(RootController.class) 
       .slash("auth/login") 
       .withRel("auth-login")); 
     return resource; 
    } 
} 
Verwandte Themen