2
respostas

Dúvida quanto a @PathParam e @GET

Tenho um dúvida quanto a utilização do @PathParam eu quero criar uma classe com os seguintes métodos :

@Path("pessoas")
public class PessoasService{

//Primeiro método para retornar todas as pessoas.
@GET
@Produces("application/json")
public List<Pessoas>   getPessoas(){
    implementacao......
}

//Segundo método para retornar uma pessoa pelo cpf
@GET
@Produces("application/json")
@Path({cpf})
public Pessoa getPessoaByCpf(@PathParam("cpf") long cpf ) {
    implementacao......
}


//Terceiro método para retornar a pessoa pelo RG.
@GET
@Produces("application/json")
@Path({rg})
public Pessoa  getPessoaByRg(@PathParam("rg") long rg) {
    implementacao......
    }
}

//Quarto método para retornar uma várias pessoas com mesmo nome.
@GET
@Produces("application/json")
@Path({name})
public List<Pessoa>  getPessoaByName(@PathParam("name") String name) {
    implementacao......
    }
}

Como que ao acessar o endereço localhost:8080..../pessoas/(Ao digitar o parâmetro aqui) vai ser identificado qual parâmetro estou passando?

O Pessoa foi apenas um exemplo, preciso implementar um serviço com várias buscar e estou tento esse problema, quando não informo um @Path diferente para cada metodo @GET.

2 respostas

Fala aí Eloi blz?

Uma forma que você pode utilizar para identificar qual é cada um, é utilizar Regex. por exemplo:

//Segundo método para retornar uma pessoa pelo cpf
@GET
@Produces("application/json")
@Path("{cpf:\\d\\d\\d\.\\d\\d\\d.\.\\d\\d\\d-\\d\\d")
public Pessoa getPessoaByCpf(@PathParam("cpf") long cpf ) {
    implementacao......
}

//Quarto método para retornar uma várias pessoas com mesmo nome.

@GET
@Produces("application/json")
@Path("minhaURL/OutraCoisa/{name}")
public List<Pessoa>  getPessoaByName(@PathParam("name") String name) {
    implementacao......
    }
}