Ich benutze MongoRepository im Frühjahr Boot-Daten Rest und es funktioniert gut, ohne meine eigenen Controller zu implementieren. Aber ich möchte "Registrierungsdatum" in meine neu erstellten Objekte setzen und die Standardimplementierung unterstützt das nicht. Ich muss meinen eigenen benutzerdefinierten Controller implementieren, um zusätzliche Felder in jedem neuen Objekt zu platzieren. Das Problem ist, dass HATEOAS nicht mehr funktioniert, wenn ich meinen eigenen Controller implementiere.Spring Boot Data REST, HATEOAS funktioniert nicht mit einem benutzerdefinierten Controller
Repository Klasse:
@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserRepository extends MongoRepository<User, String> {
}
Controller-Klasse:
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
UserRepository repository;
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<List<User>> getAll() {
List<User> list = repository.findAll();
return new ResponseEntity<>(list, HttpStatus.OK);
}
Payload mit diesem kundenspezifischen Controller sieht wie folgt aus:
[
{
"id": "571de80ebdabf25dd6cdfb73",
"username": "mark",
"password": "mark123",
"email": "[email protected]",
"createdAt": "2016-04-25 11:49"
},
{
...
Payload ohne meine benutzerdefinierte Controller wie folgt aussieht:
{
"_embedded": {
"users": [
{
"username": "mark",
"password": "mark123",
"email": "[email protected]",
"createdAt": "2016-04-25 11:49",
"_links": {
"self": {
"href": "http://localhost:8080/users/571de80ebdabf25dd6cdfb73"
},
"user": {
"href": "http://localhost:8080/users/571de80ebdabf25dd6cdfb73"
}
}
},
{
.....
Ich habe versucht, @RepositoryRestController
anstelle von @RestController
zu verwenden, aber es hat nicht geholfen. Ich frage mich, ob es eine andere Möglichkeit gibt, "Registerdatum" in neu erstellte Objekte zu setzen, ohne einen eigenen benutzerdefinierten Controller zu implementieren? Wenn nicht, was kann ich HATEOAS tun, um wieder zu arbeiten?
Sie geben den gleichen Pfad Controller und Repository Ruhe Quelle Ad nur fügen Sie spezifische Pfad in Ihrem benutzerdefinierten Controller Beispiel ersetzen Sie Ihre getAll() m ethod Anfrage Zuordnung mit diesem @ RequestMapping (Methode = RequestMethod.GET, Wert = "/ getall") und versuchen Sie nach –
@Kakashihatake danke für den Vorschlag, aber es funktioniert nicht. Das Ergebnis ist das gleiche wie zuvor. – oxyt
hast du eine Anfrage mit diesem Pfad/people/getall? –