2016-07-19 15 views
0

ich ein Spring MVC-Controller haben, die eine RequestBody als Post nimmt:Unterstützung mehrerer Transformatoren RequestBody im Frühjahr

public void postIt(@RequestBody Foo foo) {} 

Ich habe eine neue Version der API, wo Foo mit Bar ersetzt. Ich muss noch Leute unterstützen, die Foo bekanntgeben, aber sie sollten Bar für neue Kunden bekannt geben können. Foo und Bar haben die gleichen Informationen, Bar ist einfach zu bedienen.

Anstatt zwei Controller-Methoden möchte ich Spring sagen können "Wenn jemand Foo an diesen Endpunkt sendet, transformieren Sie es in Bar", indem Sie ihm eine Mapper-Funktion geben.

Beachten Sie, dass dies ist anders/nach String-Parsing (wir beide JSON mit Jackson unterstützen und XML mit jaxb)

Gibt es eine Möglichkeit, dies zu tun?

+0

Gibt es einen bestimmten Grund, warum Sie nicht zwei Methoden haben möchten? – zeroflagL

+0

Ich muss den Pfad tatsächlich ändern. Spring scheint nicht in der Lage zu sein, zwischen zwei verschiedenen RequestBodies zu unterscheiden. Ehrlich gesagt habe ich diese verschiedenen Möglichkeiten ausprobiert, ich glaube nicht, dass ich das kann und bin automatisch an Typen gebunden. Es scheint, als müsste ich den Körper einfach als Saite nehmen und es selbst tun (vielleicht als Aspekt oder Abfangjäger) – ryber

Antwort

0

Versuchen Sie, ein vor Aspect für diese Methode zu verwenden und die Konvertierung dort durchzuführen.