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?
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?
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