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 *