30.6 Desenvolvendo APIs REST com Spring Boot: Mapeamento de Rotas com @RestController e @RequestMapping

O desenvolvimento de APIs REST é uma parte fundamental da programação moderna em Java, e o Spring Boot oferece ferramentas poderosas para tornar esse processo eficiente e simplificado. Neste capítulo, vamos explorar como criar APIs REST com o Spring Boot, enfocando o mapeamento de rotas utilizando as anotações @RestController e @RequestMapping.

O que é uma API REST?

Antes de mergulharmos na implementação, é importante entender o que é uma API REST. REST (Representational State Transfer) é um estilo arquitetônico para sistemas distribuídos, e uma API REST é uma interface de programação de aplicações que adere a esse estilo. Ela permite a comunicação entre diferentes sistemas de software na internet. As APIs REST são baseadas em recursos, e cada recurso é acessado através de URLs únicas. A comunicação é geralmente feita usando o protocolo HTTP.

Introdução ao Spring Boot

O Spring Boot é um projeto da Spring Framework que visa simplificar o processo de configuração e publicação de aplicações baseadas em Spring. Ele oferece uma maneira rápida de criar aplicações stand-alone que podem ser executadas facilmente, reduzindo a necessidade de configuração manual e otimizando o processo de desenvolvimento.

@RestController e @RequestMapping

No contexto do Spring Boot, @RestController é uma anotação que é usada para definir um controlador Spring MVC que serve endpoints de uma API REST. Esta anotação é uma especialização do @Controller e indica que a classe lidará com solicitações web. Ela também garante que os dados retornados pelos métodos sejam escritos diretamente no corpo da resposta, geralmente em formato JSON ou XML.

Por outro lado, @RequestMapping é uma anotação que é usada para mapear solicitações web a métodos específicos em controladores. Ela pode ser aplicada tanto a nível de classe quanto de método e permite configurar aspectos da solicitação como o URL, método HTTP (GET, POST, PUT, DELETE, etc.), cabeçalhos e parâmetros da solicitação.

Criando um Controlador com @RestController

Para criar um controlador REST no Spring Boot, você começa anotando uma classe com @RestController. Isso transforma a classe em um bean do Spring e permite que ela trate solicitações HTTP.

@RestController
public class ExemploController {

    // Métodos do controlador virão aqui

}

Definindo Rotas com @RequestMapping

Dentro do controlador, você define métodos para lidar com diferentes rotas. Cada rota pode ser mapeada para um método usando @RequestMapping. Você pode especificar o caminho da rota, o método HTTP e outros detalhes da solicitação.

@RestController
public class ExemploController {

    @RequestMapping(value = "/exemplo", method = RequestMethod.GET)
    public String getExemplo() {
        return "Dados do exemplo";
    }

}

No exemplo acima, um GET para "/exemplo" retornará a string "Dados do exemplo".

Parâmetros de Rota e de Solicitação

Com o Spring Boot, você pode facilmente capturar parâmetros de rota e de solicitação. Parâmetros de rota são partes variáveis do caminho da URL e são anotados com @PathVariable. Parâmetros de solicitação são valores passados como parte da query string da URL e são anotados com @RequestParam.

@RestController
public class ExemploController {

    @RequestMapping(value = "/exemplo/{id}", method = RequestMethod.GET)
    public String getExemploPorId(@PathVariable("id") Long id) {
        // Lógica para retornar um exemplo baseado no id fornecido
        return "Dados do exemplo com ID: " + id;
    }

    @RequestMapping(value = "/exemplo", method = RequestMethod.GET)
    public String getExemploComParam(@RequestParam(name = "nome", required = false) String nome) {
        // Lógica para retornar um exemplo baseado no nome fornecido
        return "Dados do exemplo com nome: " + nome;
    }

}

Respostas HTTP e Status Codes

Controlar as respostas HTTP e os status codes é essencial para uma API REST. O Spring Boot facilita isso com a anotação @ResponseStatus e a classe ResponseEntity. Com @ResponseStatus, você pode definir o status code de resposta diretamente no método do controlador. Já com ResponseEntity, você tem controle mais fino sobre a resposta, podendo definir cabeçalhos, corpo e status code.

@RestController
public class ExemploController {

    @RequestMapping(value = "/exemplo", method = RequestMethod.POST)
    @ResponseStatus(HttpStatus.CREATED)
    public void addExemplo(@RequestBody Exemplo exemplo) {
        // Lógica para adicionar um novo exemplo
    }

    @RequestMapping(value = "/exemplo/{id}", method = RequestMethod.PUT)
    public ResponseEntity<String> updateExemplo(@PathVariable("id") Long id, @RequestBody Exemplo exemplo) {
        // Lógica para atualizar um exemplo existente
        return ResponseEntity.ok("Exemplo atualizado com sucesso");
    }

}

Conclusão

O mapeamento de rotas com @RestController e @RequestMapping no Spring Boot é uma abordagem poderosa e flexível para desenvolver APIs REST. Com essas anotações, você pode criar controladores que respondem a diferentes tipos de solicitações HTTP, manipulam parâmetros de forma eficiente e controlam as respostas de maneira elegante. Ao dominar esses conceitos, você estará bem equipado para construir APIs robustas e escaláveis em Java.

Agora responda o exercício sobre o conteúdo:

Qual das seguintes afirmações sobre o desenvolvimento de APIs REST com Spring Boot é correta?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Desenvolvendo APIs REST com Spring Boot: Tratamento de parâmetros de requisição

Próxima página do Ebook Gratuito:

132Desenvolvendo APIs REST com Spring Boot: Tratamento de parâmetros de requisição

5 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto