You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Claus Ibsen <cl...@gmail.com> on 2014/12/02 12:58:16 UTC
Re: Setting rest response json directly
Hi
>From Camel 2.14.1 onwards we have made this easier with
https://issues.apache.org/jira/browse/CAMEL-8104
So if you have a custom error message you just set the HTTP error code
to a value 300+ and rest-dsl will not do output binding. There is a
new option that is turned on by default, you can turn it off to use
the old behavior.
And the rest-dsl documentation has a little example in the bottom
https://cwiki.apache.org/confluence/display/CAMEL/Rest+DSL
On Sun, Nov 9, 2014 at 11:24 PM, Gary Kennedy <ga...@apnic.net> wrote:
> I changed the way I used the servlet/rest component and it works for me now.
>
> I'm still using the same bean setup as before:
> <reference id="httpService"
> interface="org.osgi.service.http.HttpService"/>
> <bean id="camelServlet" class="...CamelHttpTransportServlet"/>
> <bean id="registration" class="...OsgiServletRegisterer"
> init-method="register" destory-method="unregister">
> <property name="alias" value="/example"/>
> <property name="servletName" value="MyServlet"/>
> <property name="servlet" ref="camelServlet"/>
> <property name="httpService" ref="httpService"/>
> </bean>
>
> But now I've dropped the rest part, and using servlet endpoints to start the
> routes:
> <camelContext>
> <dataFormats>
> <json id="json" .../>
> </dataFormats>
> <route>
> <from uri="servlet:///route?servletName=MyServlet"/>
> <unmarshal ref="json"/>
> < !-- lots of magic -->
> <onException>
> <exception>net.me.MyException</exception>
> <handled><constant>true</constant></handled>
> < !-- more magic -->
> <setHeader headerName="Content-Type">
> <constant>application/json</constant>
> </setHeader>
> <setBody>
> <simple>{ "error": "${exception.message}" }</simple>
> </setBody>
> </onException>
> </route>
> </camelContext>
>
> The bonus to using this method is that the unmarshalling is covered by the
> in-route onException block as well.
>
> The downside is that now I have to work on the http method filtering (ie,
> making the route POST/GET specific). It might be easier to play with the
> consumes/produces part of the rest dsl to bring the above theory used above
> into the rest dsl. Anyways,
>
> Cheers,
> Gary
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/Setting-rest-response-json-directly-tp5758518p5758801.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
--
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cibsen@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
hawtio: http://hawt.io/
fabric8: http://fabric8.io/