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?
ATÉ 50% OFF
TÁ ACABANDO!
0 dias
0 horas
0 min
0 seg
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