The problem with expecting a binding mode provider set a response
content type is that the client with Accept not matching this 'produces'
still gets a result it does not expect - I reported this issue separately.
Example, if the client sets Accept: application/xml and hits a route
that produces JSON then it should definitely get the error before the
binding mode (JSON) etc gets a chance to process a response, in fact the
route should not even run IMHO.
The same with consumes - if one posts XML to a route expecting JSON then
it should be a proper HTTP error as opposed to a JSON reader failing to
read something it should not.
I honestly thought produces/consumes properties were supposed to be more
effective.
I think a given REST DSL integrator is allowed to use them more
pro-actively ? The original meaning was for the documentation which is
fine, but it is part of REST DSL 'API' hence a given integrator is fine
with enforcing produces/consumes, otherwise, as far as CXF is concerned,
it would be a real problem...
Thanks, Sergey
On 03/09/15 17:25, Gregor Zurowski wrote:
Hi Claus,
Thanks for your response. I was not aware that produces/consumes was
for documentation purposes only. At least, the documentation
(http://camel.apache.org/rest.html and
http://camel.apache.org/rest-dsl.html) does not clearly state this. I
will add a note on the Rest DSL wiki page.
I like the idea of letting Camel use "produces" as a fallback, as it
will simplify REST routes. Should I log a ticket for this?
Thanks,
Gregor
On Thu, Sep 3, 2015 at 5:19 PM, Claus Ibsen <[email protected]> wrote:
Hi
That was designed for documentation purpose only (and as a hint to
Camel whether its json or xml data), so what you define in
produces/consumers/description etc is for documentation, and the
swagger-api etc.
I assume when you have binding mode enabled then the library that does
the binding sets the content-type header. And thus why you see the
value.
Though we could consider letting Camel use producers as a fallback if
it hasn't been set, even when you have binding mode turned off?
On Fri, Aug 21, 2015 at 10:55 AM, Gregor Zurowski <[email protected]> wrote:
Hi everyone:
When I set up the following simple route with Camel 2.15.2 and Rest
DSL, the response will not contain the media type as specified by the
'produces' verb:
rest("/hello")
.produces("application/json")
.get("/{name}").to("direct:hello");
from("direct:hello").transform(simple("{ ${header.name} }"));
The correct media type is returned when an object is returned by the
route and binding mode is set to JSON. If a string is returned as
above, and binding is disabled, no media type is set. I am wondering
if this is intentional or whether I am missing something?
Thanks in advance,
Gregor
--
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2nd edition: http://www.manning.com/ibsen2
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/