Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Como validar o @PathParam em branco/quando não tiver nada

Tenho um web service e gostaria de saber como fazer para validar quando o 'codigo' vier em branco. Procurei tentar deixar com a annotation @DefaultValue, mas não deu certo. Como se faz caso venha em branco para não dar erro??

@Path("devolveCodigo")
public class CodigoService {
    @GET
    @Path("codigo/{codigo}")
    @Produces({ "application/xml", "application/json" })
    public Response getCodigo(@PathParam("codigo") String codigo) {        

        CodigoResource codigoResource = new CodigoResource(codigo);
        if (codigoResource.validarFormato(codigo))         
            codigoResource.go();
        else {
            return Response.status(Response.Status.BAD_REQUEST).build();
        }                
    }

Dá essa mensagem de erro no navegador:

HTTP Status 405 -

type Status report

message

description The specified HTTP method is not allowed for the requested resource ().
JBoss Web/7.0.1.Final
3 respostas

Oi Rogerio,

O problema está acontecendo pois caso não seja passado o código, a requisição não entra nesta URL pois o parâmetro é obrigatório.

O ideal seguindo os princípios do REST é que você tivesse um outro método que lidasse com a URL / codigo apenas.

Caso você realmente queira tratar as duas situações no mesmo método você pode tentar fazer uma expressão regular no seu Path para pegar caso ele esteja nulo, acredito que seja algo assim:

 @Path("codigo/{codigo:(/codigo/[^/]+?)?}")

Abraço!

Joviane, e como q eu poderia fazer dessa forma que vc disse q é a q segue os princípios do REST: "O ideal seguindo os princípios do REST é que você tivesse um outro método que lidasse com a URL / codigo apenas." ?

Obrigado

abraço

solução!

Oi Rogério,

É só você criar um novo método no seu controller que atenda a esta rota "codigo" e devolva a mensagem que você quer mostrar para o usuário.

Exemplo:

    @GET
    @Path("codigo")
    public Response metodo() {        
        //Seu código
    }

Abraço!