In einem Frühlings-Web RestController wir verwenden PagedResources
ResponseEntities zu erstellen. Wir haben eine RequestMethod, die eine Hintergrundsuche für Elemente in einem Umkreis von 5km auslöst, wenn es in 10km, 20km, kein Ergebnis gibt, bis wir irgendein Element finden.Wie Extend PagedResourceAssembler
Da wir jetzt die gegebenen Optionen vom Client ändern (die Ressource wird mit einer gegebenen Entfernung aufgerufen), wollen wir dem Client den geänderten Suchabstand zurückgeben. Die eigentliche Antwort wird dann so etwas wie diese:
{
"_links": {
"self": {
"href": "http://...
"templated": true
}
},
"_embedded": {
"parcelShopResourceList": [
{
"_id": "2760183530"
...
},
{
"_id": "2760128505"
...
},
{
"_id": "2760162267"
...
},
{
"_id": "2760196914"
...
},
{
"_id": "2760147255"
...
}
]
},
"page": {
"size": 200,
"totalElements": 5,
"totalPages": 1,
"number": 0
"searchDistance": 10
}
}
Nun ist die Frage:
- Wie kann ich verlängern
PagedResourcesAssembler
, so dass es keine zusätzliche Seite Informationen zurück?
Ich dachte, es wäre genug, ein erweiterte Page
zu schaffen, wird hinzufügen, so PagedResourcesAssembler
die zusätzliche Informationen zu den Seiteninformationen, aber dies war nicht der Fall.
ResponseEntity.ok(pagedResourcesAssembler.toResource(page, resourceAssembler));
Ich habe dann versucht die PagedResourcesAssembler
selbst außer Kraft zu setzen, aber da es viele private Methoden verwendet das Aufschalten von PagedResourcesAssembler.createResource
ist nützlich, nicht wirklich.
Ich denke, ich vermisse etwas komplett. Kann mir bitte jemand erklären, wie ich in meiner Response zusätzliche Informationen hinzufügen kann? Ich bin mir sicher, dass es einen viel einfacheren Weg dafür gibt.
Da ich eine Information hinzugefügt werden soll, das die ganze Liste betrifft, ich möchte nicht, diese Informationen in einer einzigen Ressource einfügen nur für die Bequemlichkeit.