Pergunta

Eu estou tentando usar o Jersey para desenvolver um serviço web REST.A minha exigência é para mim ser capaz de acessar o serviço da web e o retorno de dados, com base no passado PatParam parâmetros.Meu serviço web é, até agora, da seguinte forma:

@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;
}

Com o código acima em mente, o que eu estou tentando fazer é o seguinte:

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

Deve retornar a lista de todas as pessoas no "json" formato (Daí o .json extensão)

Agora, eu quero ser capaz de obter as informações para uma determinada pessoa, simplesmente colocando de IDENTIFICAÇÃO da pessoa, e retornar as informações da pessoa em json/xml baseado na extensão:

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

Com a URL acima, eu deveria retornar as informações para o personId:Mouhammed89, e retornando as informações no formato json.

Eu sei que o meu problema é com as expressões regulares que eu estou usando, então eu realmente aprecio o ajudar na sua criação.

Foi útil?

Solução

IMHO recipiente (List) e o item (Person) URL deve ser tratado separadamente.E você não precisar de explícita .json prefixo para o regresso JSON a resposta, apenas a anotação no API o nível deve 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top