Después de que estudiamos en Clase con C# la implementación
de RESTFull en clase me anime a TRATAR de hacer lo mismo en Java a través del
NETBEENS y Glassfish
1)
Crearemos un proyecto web común en NetBeans llamado SimpleRESTweb. Este proyecto hará un
simple cálculo de factorial (un típico ejemplo de Entrada, Procesamiento,
Salida).
2) Luego, crearemos una clase normal, llamada FactorialResource. Tendrá un método llamado factorial()
public class FactorialResource {
public int factorial(int numeroBase) {
if (base >= 1) {
return factorial(numeroBase - 1) * numeroBase;
}
return 1;
}
}
3) Agregamos la notación @Stateless al inicio de
la clase. Esto convierte automáticamente a nuestra clase en un EJB (visto en
Clase)
4) Al @Stateless le agregamos la anotación
@Path("/factorial") Esto indica que el recurso será accedido desde la
ruta (URI) "/factorial" por la web. En ese mismo momento, el NetBeans
detectará de que se ha creado un recurso REST, entonces pedirá activar esta característica
en la aplicación.
Utilizaremos el
dado por defecto (/resources). Clic en Ok.
Y con esto,
nuestra clase ya es un recurso REST.
5) Crear un método REST
Solo
podemos crear un método de tipo GET,
POST, PUT y DELETE. Y como el método factorial nos deberá devolver un solo
valor según el parámetro que le especificamos, usare el tipo GET.
Los valores que
se reciben desde el recurso REST deben ser objetos. Por tanto, nuestro método
debe cambiar un poco para que no devuelva un int, sino un java.lang.String.
Además, debemos
indicar que el parámetro base del método Java factorial será recibido via URL
con el nombre numerobase. Es decir, se llamará al URL así
..../factorial?numerobase=5
Usare la
notación @QueryParam antes de la declaración del parámetro y ponemos el nombre
de la cadena query.
@Stateless
@Path("/factorial")
public class FactorialResource {
@GET
public String factorial(@QueryParam("numeroBase") int numeroBase)
{
return Long.toString($factorial(numeroBase));
}
int $factorial(int numeroBase) {
if (numeroBase >= 1) {
return $factorial(numeroBase - 1) *
numeroBase;
}
return 1;
}
}
* Guardamos el
proyecto, hacemos clic derecho sobre el ícono de proyecto y seleccionamos
"Deploy". Esperamos a que se compile el proyecto, se ejecute el
GlassFish y se despliegue.
6) Ahora
probaremos el servicio de la forma más simple posible:
Bastará con
abrir el navegador y escribir el URL del proyecto:
de ahí saldrá
algo como esto:

Donde:
-
SimpleRESTweb:
Generalmente es el nombre del proyecto.
-
resources:
Ubicación de los recursos REST de la aplicación.
-
factorial: Es el nombre de nuestro recurso
(Definido por la anotación @Path)
-
numerobase: Es el parámetro del recurso.
Justamente es una cadena Query.
ULTIMO
Para consumir
desde JavaScript, usa comumente (depues de investigar) la técnica AJAX. Usando
algo ya hecho como el jQuery.
Crearemos una
página html al que llamaremos test-jquery.html. Y ahí pondremos lo siguiente.
<html>
<head>
<title></title>
<script
type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<meta
http-equiv="Content-Type" content="text/html;
charset=UTF-8">
</head>
<body>
<h2>Calcular factorial</h2>
Número:<input type="text"
name="numerobase" id="numerobase"/>
<button type="button"
id="calcularBtn">Calcular</button>
<div
id="resultadoFactorial">
Resultado:
<span></span>
</div>
<script
type="text/javascript">
jQuery("#calcularBtn").click(function(){
var numerobase =
jQuery("#numerobase").val();
jQuery.get("http://localhost:8080/SimpleRESTweb/resources/factorial",{
numerobase:numerobase
},function(resultadoFactorial){
jQuery("#resultadoFactorial span").text(resultadoFactorial)
})
})
</script>
</body>
</html>
No hay comentarios:
Publicar un comentario