2017-07-04 2 views
0

Ich benutze Kamel Rest Java Dsl mit Jetty-Komponente. Camel Version ist 2.18.0Kamel Rest dsl - jede Möglichkeit, GET mit JSON Körper haben

Die Route bietet einen Rest-Service, der JSON-formatierte Anfrage konsumiert und JSON-Antwort erzeugt. Dies ist mit POST kein Problem.

Aber da diese Strecken nicht keine Daten ändern würde es vorzuziehen sein als Verb verwenden GET.

Gibt es eine Möglichkeit, einen json Körper in der Upstream zusammen zu akzeptieren, mit GET?

Kommt es auf den zugrunde liegenden Verbraucher an?

Geben es Beispiele, dies zu tun, oder bin ich bei dem Versuch, so grundlegend falsch?

Thanx im Voraus Henning

Antwort

0

Anlegestelle Komponente gemäß der Dokumentation veraltet. Sie können Ihren Endpunkt unter Verwendung von camel-restlet component erstellen. Dort können Sie die restletMethod verwenden, um die Endpunktmethode anzugeben.

+0

Hallo Panayiotis, sorry, wenn meine Frage Klarheit fehlt, ich bin mit Anlegesteg als darunter liegende Verbraucher für den Kamel-Rest java dsl. Ich werde das bearbeiten und klarer machen. Würde restlet eingehenden Körper für GET akzeptieren? –

+0

Nun, ich habe versucht, einen Test dafür einzurichten, aber es erforderte Aufwand, sogar ein GET mit Körper zu senden, (HttpURLConnection konvertiert automatisch Ihre REQ als POST, wenn Sie den outStream einstellen), also kann ich nicht sicher sagen, ob camel-rest Akzeptieren Sie den Körper, und dann stieß ich auf dieses Problem, , wo es heißt, dass GET Körper nicht gelesen wird [CAMEL-9611] (https://issues.apache.org/jira/browse/CAMEL-9611) –

+0

Hallo Panayiotis, Vielen Dank für Deine Mühe. Ich werde eine kurze Antwort geben, die dies als Antwort sammelt. –

0

entnehme ich, was ich bislang kam. Mit Hilfe von Panayiotis Antwort, CAMEL-9611 stellt fest, dass es explizit deaktiviert zu sein scheint, ist auch Swagger die Möglichkeit fehlt, Körper in GET-Anfragen auszudrücken.

Es kommt zu dem Punkt, dass, obwohl die HTTP-Spezifikation ist ziemlich vage über die Verwendung eines Körpers in einer GET-Anfrage, die Verwendung wird nur selten von Frameworks unterstützt.

Ich hoffte, dass es möglich sein würde, komplexe Abfrage Eingang mit GET mit einem json Körper zu definieren, da es viel einfacher sein würde, komplexere Abfragen zu definieren. Aber während ich weiterlese, habe ich den Eindruck, dass diese Handhabung aufgrund mangelnder Unterstützung abgeraten wird.

+0

https://tools.ietf.org/html/rfc7231#section-4.3.1 - "Eine Payload innerhalb einer GET-Anforderungsnachricht hat keine definierte Semantik; das Senden eines Payload-Bodys für eine GET-Anforderung kann dazu führen, dass einige vorhandene Implementierungen die anfordern." –