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/

Reply via email to