Visão Geral
Curso Spring Boot Building RESTful Web Services. Este curso prático e abrangente é projetado para desenvolvedores Java, engenheiros de backend e arquitetos de software que desejam dominar a construção de RESTful Web Services eficientes e robustos usando o framework Spring Boot. Do ponto de vista técnico, você mergulhará nos princípios do design RESTful, entenderá como o Spring Boot simplifica o desenvolvimento de APIs, e aprenderá a criar endpoints HTTP que interagem com dados. Cobriremos tópicos cruciais como manipulação de dados JSON/XML, validação de requisições, tratamento de exceções global, versionamento de API, paginação e ordenação. Além disso, exploraremos a integração com bancos de dados relacionais (JPA/Hibernate) e não relacionais (NoSQL), e as melhores práticas para testar e documentar suas APIs. Ao final, os participantes terão a capacidade de desenvolver APIs escaláveis, seguras (introdução à segurança) e de alta performance.
Curso Spring Boot Building RESTful Web Services, a capacidade de projetar e implementar APIs RESTful de qualidade é uma das habilidades mais valorizadas no mercado de desenvolvimento de software. APIs REST são a espinha dorsal de microsserviços, aplicações móveis, SPAs (Single Page Applications) e integrações entre sistemas. Dominar essa habilidade significa que os profissionais podem acelerar o desenvolvimento de produtos, facilitar a integração de sistemas e criar plataformas escaláveis que atendam às crescentes demandas do mercado digital. Isso se traduz em maior agilidade nos negócios, redução de custos de integração e uma base tecnológica mais resiliente e inovadora. Profissionais com essa expertise são altamente procurados, pois são cruciais para a transformação digital das empresas.
Conteúdo Programatico
Módulo 1: Fundamentos de REST e Configuração Inicial (4 horas)
- 1.1. Introdução a REST e Web Services:
- O que são Web Services e sua evolução.
- Princípios RESTful: Stateless, Client-Server, Cacheable, Layered System, Uniform Interface.
- Recursos, URIs, Métodos HTTP (GET, POST, PUT, DELETE, PATCH).
- Códigos de Status HTTP (2xx, 4xx, 5xx).
- 1.2. Configurando um Projeto Spring Boot para REST:
- Usando Spring Initializr para criar um projeto.
- Dependências essenciais (
spring-boot-starter-web
, spring-boot-starter-data-jpa
, h2
).
- Estrutura básica de um projeto Spring Boot REST.
- 1.3. Primeiro Endpoint RESTful:
- Criando um
RestController
.
- Anotações
@RequestMapping
, @GetMapping
, @PostMapping
.
- Parâmetros de Path (
@PathVariable
) e de Query (@RequestParam
).
- Hands-on: Criar um endpoint
GET /hello
e um endpoint GET /greet/{name}
.
- 1.4. Manipulação de Dados JSON e XML:
- Spring Boot e Jackson (JSON).
- Opcional: Suporte a XML com
jackson-dataformat-xml
.
- Hands-on: Criar um
POST
endpoint que recebe um objeto JSON no corpo da requisição e o retorna.
- Prática: Configurar um projeto Spring Boot. Criar diversos endpoints
GET
e POST
simples para receber e retornar dados básicos. Testar com Postman.
Módulo 2: Modelagem de Dados e Persistência com JPA (5 horas)
- 2.1. Modelagem de Dados para APIs REST:
- Entidades de Domínio e DTOs (Data Transfer Objects).
- Mapeamento entre Entidades e DTOs.
- 2.2. Introdução ao Spring Data JPA:
- O que é JPA e Hibernate.
@Entity
, @Table
, @Id
, @GeneratedValue
.
@Repository
e JpaRepository
.
- 2.3. Operações CRUD Completas:
- Criando a camada de serviço (
@Service
).
- Implementando endpoints
GET
(todos, por ID), POST
, PUT
, DELETE
.
- Hands-on: Construir uma API RESTful completa para gerenciar um recurso (ex:
Product
, User
, Book
) com operações CRUD e persistência em banco de dados H2.
- 2.4. Mapeamento de Relacionamentos:
@OneToMany
, @ManyToOne
, @ManyToMany
.
- Evitando problemas de serialização com relacionamentos.
- Hands-on: Estender a API para incluir um relacionamento (ex:
Order
com Product
).
- Prática: Modelar entidades e DTOs. Implementar a camada de persistência com Spring Data JPA. Desenvolver todos os endpoints CRUD para um recurso.
Módulo 3: Validação, Tratamento de Exceções e Mensagens (5 horas)
- 3.1. Validação de Requisições com Bean Validation:
@Valid
e anotações de validação (@NotNull
, @Size
, @Min
, @Max
, @Email
).
- Retornos de erro padrão do Spring.
- Hands-on: Adicionar validações aos DTOs de entrada e testar com requisições inválidas.
- 3.2. Tratamento Centralizado de Exceções:
@ControllerAdvice
e @ExceptionHandler
.
- Retornando respostas de erro padronizadas (Problem Details).
- Hands-on: Criar um
ControllerAdvice
para capturar exceções comuns (ex: NotFoundException
, IllegalArgumentException
) e retornar respostas HTTP apropriadas.
- 3.3. Mensagens Personalizadas de Validação:
- Configurando
messages.properties
para mensagens de erro.
- Internacionalização (i18n) básica para mensagens.
- 3.4. DTOs de Saída e Projeções:
- Controlando os dados retornados nas respostas.
- Hands-on: Criar DTOs específicos para respostas, formatando os dados conforme a necessidade do cliente.
- Prática: Implementar validação robusta. Desenvolver um tratamento global de exceções. Personalizar mensagens de validação.
Módulo 4: Boas Práticas: Versionamento, Paginação, Ordenação e Testes (6 horas)
- 4.1. Versionamento de API REST:
- Estratégias de versionamento: URI, Header, Query Parameter.
- Vantagens e desvantagens de cada uma.
- Hands-on: Implementar versionamento via URI para um endpoint.
- 4.2. Paginação e Ordenação:
Pageable
e Page
do Spring Data JPA.
- Recebendo parâmetros de paginação e ordenação nas requisições.
- Hands-on: Adicionar suporte a paginação e ordenação aos endpoints
GET all
.
- 4.3. Testes de Unidade e Integração para APIs REST:
@WebMvcTest
para testes de controlador (sem carregar o contexto JPA).
@SpringBootTest
para testes de integração completos.
MockMvc
e TestRestTemplate
para simular requisições HTTP.
- Hands-on: Escrever testes de unidade para a camada de serviço e testes de integração para os controladores REST.
- 4.4. Documentação de API com SpringDoc OpenAPI (Swagger UI):
- Adicionando a dependência
springdoc-openapi-starter-webmvc-ui
.
- Anotações
@Operation
, @ApiResponse
, @Parameter
.
- Acessando a interface Swagger UI.
- Hands-on: Documentar os principais endpoints da sua API e explorar a Swagger UI.
- Prática: Implementar versionamento, paginação e ordenação. Escrever testes robustos para as APIs. Gerar documentação interativa com Swagger UI.
Módulo 5: Segurança Básica, HATEOAS e Próximos Passos (4 horas)
- 5.1. Introdução à Segurança em APIs REST:
- Ameaças comuns a APIs (autenticação fraca, injeção, acesso não autorizado).
- Visão geral do Spring Security para autenticação e autorização básica (HTTP Basic, sem detalhar JWT ou OAuth).
- Hands-on: Adicionar
spring-boot-starter-security
e configurar uma autenticação HTTP Basic simples para a API.
- 5.2. HATEOAS (Hypermedia as the Engine of Application State) (Conceitual):
- O que é HATEOAS e por que é importante para APIs REST de nível mais alto.
- Uso do Spring HATEOAS (visão geral).
- 5.3. Melhores Práticas e Considerações de Design:
- Idempotência.
- Controle de Cache.
- Tratamento de status 404 (Not Found) vs. 403 (Forbidden).
- Boas práticas de naming para URIs.
- 5.4. Próximos Passos:
- Microservices com Spring Cloud.
- Autenticação avançada (JWT, OAuth 2.0).
- Cloud Deployment.
- Outras tecnologias de persistência (NoSQL).
- Prática: Proteger a API com autenticação HTTP Basic. Discutir casos de uso para HATEOAS e outras melhores práticas.