Curso Spring Boot Building RESTful Web Services
24 horasVisã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.
Objetivo
Ao final do Curso Spring Boot Building RESTful Web Services, você será capaz de:
- Compreender e aplicar os princípios e melhores práticas de design RESTful.
- Criar projetos Spring Boot para desenvolver APIs REST.
- Definir endpoints HTTP (GET, POST, PUT, DELETE) e mapeá-los para operações CRUD.
- Manipular dados JSON e XML em requisições e respostas.
- Implementar validação de dados para garantir a integridade das requisições.
- Gerenciar tratamento de exceções de forma centralizada e padronizada.
- Realizar persistência de dados utilizando Spring Data JPA com bancos de dados relacionais.
- Adicionar versionamento, paginação e ordenação às suas APIs.
- Escrever testes de unidade e integração para APIs REST.
- Documentar APIs utilizando SpringDoc OpenAPI (Swagger UI).
- Aplicar os princípios de segurança básica em APIs RESTful.
Publico Alvo
- Desenvolvedores Java: Que desejam aprender ou aprimorar a criação de APIs REST com Spring Boot.
- Engenheiros de Backend: Responsáveis por construir a lógica de negócios e exposição de dados via APIs.
- Arquitetos de Software: Para entender e aplicar os princípios de design REST em soluções Spring Boot.
- Estudantes de Ciência da Computação/Engenharia de Software: Buscando habilidades práticas para o mercado de trabalho.
Pre-Requisitos
- Conhecimento sólido de Java: Entendimento de classes, objetos, interfaces, coleções, lambdas.
- Conhecimento básico de Spring Framework/Spring Boot: Familiaridade com anotações (
@Autowired
,@Component
,@Service
,@Repository
), injeção de dependências. - Noções básicas de HTTP (métodos, códigos de status, headers).
- Familiaridade com Maven ou Gradle.
- (Desejável) Noções básicas de SQL e bancos de dados relacionais.
Materiais
Inglês/Português/Lab PráticoConteú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 endpointGET /greet/{name}
.
- Criando um
- 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
ePOST
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
eJpaRepository
.
- 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.
- Criando a camada de serviço (
- 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
comProduct
).
- 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.
- Configurando
- 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
ePage
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
eTestRestTemplate
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.
- Adicionando a dependência
- 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.