Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Camel com inbound REST

Bom dia, Estou com dificuldade para encontrar alguma documentação que me oriente a expor minha rota como um serviço REST. Ou seja, quero que meu inbound seja um serviço REST. Podem me ajudar, por favor?

2 respostas
solução!

Oi Victor,

vc pode usar o componente Rest DSL do Apache Camel. Segue um pequeno exemplo baseado na documentação:

package br.com.caelum.camel;

import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;

public class RotaRestDsl {

    public static void main(String[] args) throws Exception {
        CamelContext context = new DefaultCamelContext();
        context.addRoutes(createRouteBuilder());
        context.start();
    }

    protected static RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {
            @Override
            public void configure() throws Exception {

                restConfiguration().component("jetty").host("localhost").port(8080);

                rest("/service")
                    .get("/oi").to("direct:oi")
                    .post("/tchau").to("direct:tchau");

                from("direct:oi").log("${headers}")
                        .setHeader(Exchange.CONTENT_TYPE, simple("text/html"))
                        .transform()
                        .constant("<html>funcionou HTPP GET</html>");

                from("direct:tchau").log("${headers} \n ${body}")
                        .setHeader(Exchange.CONTENT_TYPE, simple("text/html"))
                        .transform()
                        .constant("<html>funcionou HTPP POST</html>");
            }
        };
    }
}

Alem disso, vc precisa adicionar no pom.xml:

<dependency>
           <groupId>org.apache.camel</groupId>
           <artifactId>camel-jetty</artifactId>
          <version>${camel-version}</version>
</dependency>

Subindo a rota vc pode acessar:

http://localhost:8080/service/oi

através de um HTTP GET ou

http://localhost:8080/service/tchau

atraves de um HTTP POST.

Abs, Nico

Muito obrigado Nico. Ajudou bastante! Abs