Ejemplo: servicio REST con Apache Camel

    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

     

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *