2016-04-25 7 views
0

Ich versuche, jedem Datensatz in meiner Datenbank Links hinzuzufügen, da ich versuche, das HATEOAS-Konzept zu implementieren. Ich habe jedoch einige Probleme damit. Ich habe versucht, diesem Leitfaden https://spring.io/guides/gs/rest-hateoas/ zu folgen. Aber ohne Erfolg. Wie und wo sollte ich den Code zum Hinzufügen von Links schreiben? Denn es scheint nicht zu funktionieren, wenn ich versuche, es in meine Controller-Methode zu schreiben, weil withSelfRel() nicht definiert ist.Hinzufügen von Links zu jedem Datensatz mit Spring REST + MongoDB

Grundsätzlich versuche ich einen Link zu jedem Konto in meiner Datenbank hinzugefügt.

//Create account 
@RequestMapping(value="/accounts", method = RequestMethod.POST) 
public ResponseEntity<?> accountInsert(@RequestBody Account account) { 
    account = new Account(account.getFirstName(), account.getLastName(), account.getEmail(), account.getPassword(), account.getBirthDate(), account.getActivities(), account.getFriends()); 
    accountRepository.save(account); 
    //account.add(linkTo(methodOn(AccountController.class, accountInsert(account)).withSelfRel())); /// HERE IS MY TRY 
    HttpHeaders httpHeaders = new HttpHeaders(); 
    httpHeaders.setLocation(ServletUriComponentsBuilder.fromCurrentRequest().build().toUri()); 
    return new ResponseEntity<>(null, httpHeaders, HttpStatus.CREATED); 
} 

Vielen Dank im Voraus!

+0

verweise ich denke, Sie richtigen Code geschrieben haben, können Sie einfach hinzufügen url in '@ RequestMapping'. Welcher Fehler erhalten Sie –

+0

"Die Methode withSelfrel() ist für den Typ AccountController undefiniert". Es erkennt die Methode nicht. Sind Sie sicher, dass der Code richtig ist? Weil ich denke, methodOn erfordert (Klasse, String) und ich habe eingefügt (Klasse, Konto), die ein Objekt ist. – BananaBackend

Antwort

0

Sie diese Methode innerhalb derselben ein
Versuchen Sie nicht verwenden können: -

Link self=linkTo(AccountController.class).slash(account.getId()).withSelfRel(); 

Oder Sie können aus gegebenen link

+0

{ "Zeitstempel": "2016-04-25T09: 02: 20.986 + 0000", "Status": 500, "Fehler": "Interner Serverfehler", "Ausnahme": "org.springframework.data .mapping.model.MappingInstantiationException“, ‚message‘:‚Fehler org.springframework.hateoas.UriTemplate mit Konstruktor NO_CONSTRUCTOR mit Argumenten‘, ‚Pfad instanziiert‘:‚/ Konten‘ } – BananaBackend

+0

brauche ich einen Konstruktor hinzufügen irgendwo? – BananaBackend

+0

es gibt keine Notwendigkeit, Konstruktor zu schreiben, aber ich denke, zuerst gehen Sie durch diesen Link erhalten Sie, was Sie implementieren möchten –

Verwandte Themen