ich eine Federsteg 4.3.4 App mit einem REST-Endpunkt haben:Federsteg Unterstützung für optionale Mehrwertparameter
@RequestMapping(value = "/doStuff", method = RequestMethod.GET)
public ResponseEntity<MyDTO[]> findSomething(@RequestParam(value = "status")
Optional<Set<EnumStatus>> statusFilter)
{
[...];
}
ich es so nennen: http://localhost:8080/rest/api/doStuff?status=CREATED&status=ACTIVATED
erwartete ich den Wert statusFilter zu sein:
Optional { Set {EnumStatus.CREATED, EnumStatus.ACTIVATED}}
Stattdessen bekam ich:
Optional { Set {EnumStatus.CREATED}}
Es stellt sich heraus, dass Spring den ArrayToObjectConverter verwendet und die beiden Werte auf einen einzigen Wert reduziert.
Gibt es einen Weg um dies? Ist das ein Fehler oder erwartetes Verhalten?
aus der Box umwandeln würde dies http://stackoverflow.com/questions/2602043/rest-api-best-practice -how-accept-list-of-parameter-values-as-input – blank
Versuchen Sie, 'Optional' zu entfernen und nur' Set' zu belassen und setzen Sie 'required = false' auf' 'RequestParam' anstelle von' Optional'. (Sie können auch eine neuere 4.3.x-Version ausprobieren, da 4.3.6 die neueste ist). Betrachtet man den Code für 4.3.4 (und 5.0.0.M4), könnte ein kleiner Fehler drin sein, der in neueren Versionen behoben wird. –
Ja, das ist was ich getan habe und es funktioniert, aber es fühlt sich schmutzig an, weil der ganze Rest mit Optional null-sicher ist. Also "es ist ein Fehler" ist die Antwort, die ich in diesem Fall suchte, danke! Posten Sie es und ich werde es als akzeptiert markieren. –