Ejemplo: servicio REST con Apache Camel

E

Con la extrema prevalencia de aplicaciones móviles, aplicaciones web y aplicaciones de escritorio, los servicios REST son más importantes que nunca para proporcionar datos a sus usuarios. Estos datos se pueden utilizar para la aplicación nativa o para que los desarrolladores de terceros amplíen el alcance de su servicio a otras aplicaciones. De cualquier manera, el servicio REST debe ser fácil de usar y modificarse para mantenerse al día con la demanda cambiante de los usuarios finales.

Java proporciona muchas opciones para crear servicios REST, que incluyen JAX-RS, Camello apachey Spring MVC. Todos son buenos marcos y serían suficientes para casi cualquier proyecto, pero yo personalmente prefiero usar Apache Camel. Es tan flexible y fácil de usar que es imposible dejarlo pasar.

El código de ejemplo que se proporciona aquí está destinado a ser utilizado para autenticar a un usuario a través de una ruta REST (tenga en cuenta que puede haber problemas de seguridad que no se tratan en esta ruta). Utilizando Embarcadero, exponemos una ruta en la ruta ‘api / v1.0 / auth’, que pasa un HttpServletRequest instancia a nuestro authenticationProcessor frijol. Desde aquí, podemos extraer toda la información requerida para determinar si las credenciales son válidas. Si son válidos, establecemos el authenticated encabezado a true en el mensaje y luego devolver un token único para que lo use el cliente. De lo contrario, devolvemos JSON para notificar al cliente que la autenticación ha fallado.

import java.util.UUID;
...
private static final String AUTH_FAILED = "{"
                                           + ""success": false,"
                                           + ""message": "Authentication failed.""
                                           + ""token": null"
                                        + "}";
private static final String AUTH_SUCCEEDED = "{"
                                              + ""success": true,"
                                              + ""message": "Authentication succeeded.""
                                              + ""token": "%s""
                                           + "}";
...
@Override
public void configure() {
	from("jetty:http://localhost:8080/api/v1.0/auth")
	.process(authenticationProcessor)
	.choice()
		.when(header("authenticated").isEqualTo(true))
			.setBody().constant(String.format(AUTH_SUCCEEDED, UUID.randomUUID().toString()))
		.otherwise()
			.setBody().constant(AUTH_FAILED)
	.end();
}

Este sencillo ejemplo está destinado a mostrar la facilidad con la que podemos utilizar Camel para los servicios REST. Claro, otros marcos pueden requerir incluso menos código para que la autenticación funcione, pero el poder de Camel se realiza cuando comenzamos a utilizar otros componentes de Camel en nuestra ruta. Quizás, por ejemplo, más tarde decidamos que preferiríamos que nuestros clientes se autenticaran mediante el servicio OAuth de Google. En este caso, simplemente reemplazaríamos .process(authenticationProcessor) con el componente Camel gauth: .to("gauth:authorize?callback=" + encodedCallback + "&scope=" + encodedScope);, dónde encodedCallback y encodedScope son URL de devolución de llamada para manejar completamente el servicio de autenticación de Google. Ver Camel’s página de Gauth para un ejemplo completo.

Dado que Camel juega bien con más 100 fuentes de información diferentesy ServiceMix, debería ser obvio que con solo unas pocas líneas de código podremos agregar algunas funciones bastante útiles a nuestro servicio REST.

Recursos

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad