Curso Spring Boot Building RESTful Web Services

  • DevOps | CI | CD | Kubernetes | Web3

Curso Spring Boot Building RESTful Web Services

24 horas
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.

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ático
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.
TENHO INTERESSE

Cursos Relacionados

Curso Ansible Red Hat Basics Automation Technical Foundation

16 horas

Curso Terraform Deploying to Oracle Cloud Infrastructure

24 Horas

Curso Ansible Linux Automation with Ansible

24 horas

Ansible Overview of Ansible architecture

16h

Advanced Automation: Ansible Best Practices

32h