Guia Completo para Criar Interceptores HTTP no Spring Boot

Aprenda a criar interceptores HTTP no Spring Boot para manipular requisições e respostas de forma eficiente.

Como Funciona o Interceptor HTTP no Spring Boot

Os interceptores HTTP no Spring Boot são uma poderosa ferramenta para manipular requisições e respostas. Eles permitem que você inspecione, modifique e até mesmo bloqueie as requisições antes que elas sejam processadas pelo controlador. Neste guia, vamos explorar como você pode criar seu próprio interceptor HTTP e usá-lo para gerenciar o fluxo de dados em sua aplicação.

O Que é um Interceptor?

Um interceptor é uma classe que implementa a interface HandlerInterceptor do Spring. Ele fornece três métodos principais: preHandle, postHandle e afterCompletion. Cada um desses métodos é executado em diferentes momentos do ciclo de vida da requisição.

Criando um Interceptor Simples

Para criar um interceptor, você precisa definir uma classe que implemente a interface HandlerInterceptor. Veja um exemplo:

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class MeuInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("Interceptando requisição para: " + request.getRequestURI());
        return true; // Continue para o próximo interceptor ou controlador
    }
}

Neste código, estamos interceptando a requisição e imprimindo a URL que está sendo acessada. O método preHandle retorna true, permitindo que a requisição continue seu fluxo. Se você retornar false, a requisição será bloqueada e não chegará ao controlador.

Registrando o Interceptor

Após criar o interceptor, você precisa registrá-lo na configuração do Spring. Isso pode ser feito em uma classe que estenda WebMvcConfigurer:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class ConfiguracaoWeb implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MeuInterceptor());
    }
}

Com essa configuração, o seu interceptor será aplicado a todas as requisições recebidas. Você pode personalizar ainda mais, definindo padrões de URL específicos para o interceptor.

Manipulando Respostas

Além de manipular requisições, você também pode modificar a resposta. O método postHandle é chamado após o controlador ter processado a requisição, mas antes de retornar a resposta ao cliente. Veja como:

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    response.addHeader("Custom-Header", "Valor do Header" );
}

Neste exemplo, adicionamos um cabeçalho personalizado à resposta, permitindo que o cliente receba informações adicionais.

Conclusão

Os interceptores HTTP no Spring Boot são uma ferramenta valiosa para gerenciar o fluxo de requisições e respostas de maneira flexível. Você pode usá-los para autenticação, logging, modificação de dados e muito mais. A implementação é simples e pode ser adaptada para atender às suas necessidades específicas. Não hesite em explorar as possibilidades que os interceptores podem oferecer para sua aplicação.

Próximos Passos

Agora que você conhece o básico sobre interceptores, experimente implementar um interceptor que faça validação de tokens de autenticação nas requisições. Isso adicionará uma camada extra de segurança à sua aplicação.

Os interceptores no Spring Boot são fundamentais para construir aplicações robustas e seguras. Eles permitem que você gerencie o ciclo de vida das requisições de forma eficiente, garantindo que as regras de negócio sejam aplicadas antes que a requisição chegue ao controlador. Ao entender como funcionam e como implementá-los, você estará mais preparado para criar soluções escaláveis e de fácil manutenção.

Algumas aplicações:

  • Autenticação de usuários
  • Logging de requisições
  • Modificação de cabeçalhos HTTP
  • Validação de dados antes do processamento

Dicas para quem está começando

  • Estude a documentação oficial do Spring para entender melhor os interceptores.
  • Pratique criando diferentes tipos de interceptores, como para logging e autenticação.
  • Teste seu interceptor com diferentes cenários de requisição para entender seu comportamento.

Contribuições de Gustavo Ferraz

Compartilhe este tutorial: Como criar um interceptor HTTP no Spring Boot?

Compartilhe este tutorial

Continue aprendendo:

Como configurar um banco de dados em memória H2 para testes no Spring Boot?

Saiba tudo sobre a configuração do H2 no Spring Boot e como ele pode facilitar seus testes.

Tutorial anterior

O que é o Actuator e como monitorar uma aplicação Spring Boot?

Entenda como o Actuator pode facilitar o monitoramento de aplicações Spring Boot.

Próximo tutorial