Solução amigável para o erro 405 – Method not Allowed

Boa tarde a todos,

Quando anotamos as URLs do nosso sistema com @Path, @Get, @Post, definimos as formas de acesso a estas URLs. Quando mapeio um endereço com @Path, o VRaptor permite o acesso ao endereço tanto por GET como por POST, quando usamos @Post somente por POST e @Get somente por GET.

Quando um usuário ou recurso tenta acessar este endereço com um método não esperado, é gerada uma exception que para toda a sua aplicação, esta com o código 405, ou a MethodNotAllowedException. Para o usuário isso não é viável, logo porque pode deixá-lo frustrado ou mostrar qual a tecnologia utilizada na sua aplicação.

O que fazer ?

Podemos criar um componente com escopo de requisição (request) que intercepta as chamadas as URIs da aplicação e caso seja chamado o método ‘deny’ da interface MethodNotAllowedHandler, podemos definir uma determinada ação.

Assim, com o uso de injeção de dependências do container em uso (Spring, Pico, Guice) posso incluir recursos nesta classe para realizar N operações como por exemplo log em banco, armazenar uma mensagem em sessão, etc.

Referências

http://vraptor.caelum.com.br/documentacao/interceptadores/

http://vraptor.caelum.com.br/cookbook/aceitando-urls-com-ou-sem-barra-no-final/

Até a próxima.

Blog Java
  • Fabiano

    Muito bom! Parabéns.