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/