Pregunta

Estoy intentando utilizar Jersey para desarrollar un servicio web REST.Mi requisito es poder acceder al servicio web y devolver datos, según los parámetros de PatParam pasados.Mi servicio web hasta el momento es el siguiente:

@GET
@Produces(MediaType.APPLICATION_JSON)
@Consumes({ "application/xml", "application/json", "application/x-www-form-urlencoded" })
@Path("/1.0/people{extension:(.json)*}/{personId:([^/]+?)?}{entityExtension:(.json)*}")
public String getLocation(@PathParam("extension") String extension, @PathParam("personId") String personId,@PathParam("entityExtension") String entityExtension)
{
    if ((personId==null ||personId.equals("")) && (extension == null || extension.equals("")))
        return "No Id, and no extension";
    else
        return "personId= "+personId + ", extension= " + extension+", entityExtension= "+entityExtension;
}

Con el código anterior en mente, lo que intento lograr es lo siguiente:

http://localhost:8080/Jersey/RestService/1.0/people.json

Debería devolver la lista de todas las personas en formato "json" (de ahí la extensión .json)

Ahora, quiero poder obtener la información de una persona en particular simplemente ingresando el ID de la persona y devolver la información de la persona en json/xml según la extensión:

http://localhost:8080/Jersey/RestService/1.0/people/Mouhammed89.json

Con la URL anterior, debería devolver la información del ID de persona:Mouhammed89 y devolver la información en formato json.

Sé que mi problema está en las expresiones regulares que estoy usando, así que agradecería mucho la ayuda para crearlas.

¿Fue útil?

Solución

Contenedor en mi humilde opinión (List) y elemento (Person) URL debe manejarse por separado.Y no requieres explícito .json prefijo para regresar JSON respuesta, sólo la anotación en el API El nivel debería ser suficiente.

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/1.0/people") //no need for .json suffix as API only return JSON format
public List<String> allLocations(..){ //jackson etc. will convert return type to json string 
..
}

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/1.0/people/{personId: \\d+}")//digits only
public String getLocation(..){ //jackson etc. will convert return type to json string 
..
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top