Saltar la navegación

Ejercicio 3: Parámetros

Objetivos

En este ejercicio pondremos en práctica y analizaremos:

  • el uso de las distintas formas de capturar parámetros en los Servicios Web
    • Para esto, crearemos un servicio web que reciba un identificador como parámetro y devuelva información de la persona cuyo identificador coincida con el identificador recibido.
  • el uso de los verbos (métodos HTTP) correspondiente a las operaciones CRUD
    • Para esto, crearemos la implementación de las operaciones CRUD en el DAO y generaremos un servicio web para cada operación.

Instrucciones

Al ejercicio anterior (rest_ejercicio2_formato) agregar los siguiente:

  1. Crear un recurso con el nombre ParametrosRecurso.java dentro del paquete serviciosrest.persona (Ver código)
  2. Crear la página index.html en el directorio WebContent (Ver código). Esta página presentará formularios que envían parámetros a los servicios web a través de las diferentes formas de URL.

Arquitectura del Ejercicio

ejercicio 3 arquitectura

Código

ParametrosRescurso.java

package serviciosrest.persona;

import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import DAO.ImplPersonaDAO;
import modelo.Persona;

@Path("/personas")
public class ParametrosRecurso {

	/*
	 * Sin parámetros
	 */
	@GET
	@Produces(MediaType.APPLICATION_JSON)
	public Response getPersonas() {
		List<Persona> personas = ImplPersonaDAO.getPersonas();
		return Response.ok(personas).build();
	}

	/*
	 * Parámetro enviado en URL y capturado con @PathParam
	 */
	@GET
	@Produces(MediaType.APPLICATION_JSON)
	@Path("/{id}")
	public Response getPersonaByPathParam(@PathParam("id") int id) {
		Persona p = ImplPersonaDAO.getPersonasById(id);
		if (p != null) {
			return Response.ok(p).build();
		}
		return Response.ok(Response.Status.NOT_FOUND).build();
	}

	/*
	 * Parámetro enviado en URL (?param = 1) y capturado con @QueryParam
	 */
	@GET
	@Path("/query")
	@Produces(MediaType.APPLICATION_XML)
	public Response getPersonaByQueryParam(@QueryParam("id") int id){
		Persona p = ImplPersonaDAO.getPersonasById(id);
		if (p != null) {
			return Response.ok(p).build();
		}
		return Response.ok(Response.Status.NOT_FOUND).build();
	}
}



index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<p>Aplicación de Servicios Web- REST</p>

	<h3>No parametros</h3>
	<a href="http://localhost:8080/5_serviciosweb_1/rest/personas">Consultar Personas</a>
	<br>
	<h3>Ejemplo de @PathParam</h3>
	<form action="http://localhost:8080/5_serviciosweb_1/rest/personas/2"
		method="get">
		<p>
			<input type="submit" value=".../rest/personas/2" />
		</p>
	</form>
	<h3>Ejemplo de @QueryParam</h3>
	<form action="http://localhost:8080/5_serviciosweb_1/rest/personas/query"
		method="GET">
		<p>
			Id:<input type="text" name="id" />
		</p>
		<p>
			<input type="submit" value=".../rest/personas/query?id=*" />
		</p>
	</form>

</body>
</html>