Criando uma API REST
conectada a Amazon
RDS com Java
Juliana Mascarenhas
Me. Modelagem Computacional
Mais sobre mim
● FORMAÇÃO
● Criadora de conteúdo - Simplificando Redes
[Link]
● Mestre em Modelagem Computacional – LNCC
● Engenheira da Computação - UCP
● Técnica de Telecomunicações - CEFET-RJ
Mais sobre mim
Mais sobre mim
● CONTATO:
● Linkedin: Juliana Mascarenhas,
[Link]
● Repositório do Github
[Link]
Objetivo do curso
Contrução de uma API com estruturação do padrão
REST utilizando o framework Spring. Além disso, os
dados de consulta desta API estaram persistidos em
nuvem com RDS.
Você irá estudar conceitos atrelados as duas
tecnologias foco deste curso, a RDS e Java Spring.
Percurso
Aula 1 Introdução
Aula 2 AWS RDS
Aula 3 Criando um projeto básico com spring boot
Percurso
Aula 4 API REST com CRUD
Aula 5 Construindo uma API REST com RDS AWS
Aula 6 API REST com HATEOAS
Dúvidas
[Nome durante
do curso] o
[Nome
curso? da aula]
> Fórum do curso
> Comunidade online (discord)
[Nome do palestrante]
[Posição]
[Nome do curso]
Aula 1: Introdução
[NomeAPI
da aula]
REST - AWS RDS com
Java Spring
[Nome do palestrante]
[Posição]
Objetivos
1. Banco de Dados relacionais
2. Relembrando SQL
3. O que é Computação em nuvem?
4. AWS - Visão geral
Aula 1| Etapa 1:
[Nome do curso]
Banco de dados
[Nome da
Relacionais aula]
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
Banco de dados
O que são banco de dados?
Banco de dados
O que são banco de dados?
Persistência de dados
Objetivo Estruturação de dados
Retrato fiel da realidade
Banco de dados
O que são banco de dados?
Persistência de dados
Objetivo Contexto do mundo real
Estruturação de dados
Retrato fiel da realidade
Banco de dados
O que são banco de dados?
Aspectos dos dados
Regras para corretude
Acesso controlado
Banco de dados
O que são banco de dados?
Aspectos dos dados
Fatores de influência
Regras para corretude Volume
Acesso controlado
Velocidade
Heterogeniedade
Banco de dados
Qual objetivo?
Dados "espalhados"
Banco de dados
Qual objetivo?
Classificação criteriosa
Banco de dados
Mini-mundo
Qual objetivo?
Classificação criteriosa
Contexto
Banco de dados
Acesso aos dados?
• Controle de acesso BDs
Concorrente ou Bloqueio
Mecanismos de
• Autorização controle
Banco de dados
Representação dos dados e regras do mini-mundo
• Dados
• Regras e Essência dos sistemas
de informação
• Operações
Banco de dados
Por que utilizar banco de dados?
• Padronização com SQL
• Isolamento dos dados (lógico)
• Consistência de estado
• Regras de integridade
• Mecanismos de acesso:
Estrutura, gerenciamento de memória,
processamento ...
Banco de dados
Modelo relacional
• Baseado na teoria de conjuntos
• Tabelas bidimensionais
Snapshot
• Relação entre conjuntos (objetos)
Banco de dados
Modelo relacional
• Baseado na teoria de conjuntos
• Tabelas bidimensionais
Snapshot
• Relação entre conjuntos (objetos)
Linhas Colunas Tabelas
Banco de dados
Benefícios de BDs relacionais
Snapshot
Banco de dados
Benefícios de BDs relacionais
• Simplicidade na consulta
• Vasta utilização
Snaphot
• Dados estruturados
• Consistência dos dados
Banco de dados
Benefícios de BDs relacionais
• Simplicidade na consulta
• Vasta utilização
Snaphot
• Dados estruturados
• Consistência dos dados
Ex: Depósito em conta
[Nome do curso]
Aula 1| Etapa 2:
Relembrando SQL
[Nome da aula]
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
SQL
Sucesso dos BDs relacionais
SQL
Linguagem padronizada de manipular dados
Standart Query Language
SQL
Dados
Definição
SQL
Consulta
Atualizações
SQL
Visões
SQL
Segurança e autorização
SQL
Comandos SQL
• DDL – Data Definition Language
• DML – Data Manipulation Language
• Base na teoria dos conjuntos
SQL
Comandos básicos SQL
• CREATE TABLE Empregado
• CREATE TABLE [Link]
Esquema
SQL
Comandos básicos SQL
Tipos de dados
Numérico Boleano
Cadeia de carácteres Data time
Bit Timestamp
SQL
Comandos básicos SQL
DNUMERO INT NOT NULL CHECK (DNUMERO > 0 AND DNUMERO
< 21
Restrições
SQL
Comandos básicos SQL
• DROP TABLE DEPENDENTE CASCADE;
• DROP SCHEMA EMPRESA CASCADE;
Removendo
SQL
Consultas básicas em SQL
SELECT <lista de atributos> FROM
<lista de tabelas> WHERE <condicao>;
Estrutura
SQL
Consultas básicas em SQL
SELECT PNOME, UNOME, ENDEREÇO FROM
EMPREGADO, DEPARTAMENTO
WHERE DNOME='Pesquisa' AND DNUMERO=DNO
Exemplo
SQL
Consultas básicas em SQL
(SELECT DISTINCT PNUMERO FROM PROJETO, DEPARTAMENTO, EMPREGADO
WHERE DNUM=DNUMERO AND GERSSN=SSN AND UNOME='Smith')
UNION
(SELECT DISTINCT PNUMERO FROM PROJETO, TRABALHA_EM,
EMPREGADO WHERE PNUMERO=PNO AND ESSN=SSN AND UNOME='Smith');
União
Aula 1| Etapa 3:
[Nome do curso]
O que é Computação
[Nome da
em nuvem? aula]
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
Cloud
Servidores
Dados
Aplicações
Cloud
Virtualização
Sistemas distribuídos
Pay-per-use
MODELO
Escalabilidade
Recursos sob demanda
Deslocamento da infra local
Cloud
Data centers
Modelo de serviços
Camada conceitual
Cloud
Cloud
Aspectos da computação em nuvem
• Recursos "infinitos"
• Baixo custo inicial
• Escalabilidade
• Transparência/Abstração
• Pagar pelo que usa
Cloud
Arquitetura
Prestador de infraestrutura
Utiliza os serviços da
nuvem Prestador de serviço
Usuário da nuvem
Cloud
Arquitetura
Desenvolvem e
Prestador de infraestrutura
disponibilizam os
serviços
Prestador de serviço
Usuário da nuvem
Cloud
Arquitetura
Prestador de infraestrutura
Responsáveis por Prestador de serviço
manter os serviços de
rede e armazenamento Usuário da nuvem
Cloud
Camadas
Aplicação
Responsáveis por Plataforma
manter os serviços de
rede e armazenamento Infraestrutura
Cloud
Serviços
Instâncias
App completas SaaS
Modelo de serviços PaaS
IaaS
Cloud
Serviços
Instâncias
App completas SaaS
Prove a aplicação
Modelo de serviços PaaS
IaaS
1 ou + dão suporte a PaaS
Cloud
Pública
Privada
Hibrída
[Nome do curso]
Aula 1| Etapa 4:
AWS - Visão Geral
[Nome da aula]
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
AWS
Amazon Web Service
• 2006
• Provedor de serviços
• Nuvem
• 175 serviços
AWS Máquinas virtuais
Execução de códigos
Amazon Web Service
Desenvolvimento Machine Learning
• 2006
• Provedorde serviços
• Nuvem Dev. interfaces
• 175 serviços Banco de dados
Rede privada na nuvem
Data Warehouse Armazenamento
EC2
AWS Máquinas virtuais
LAMBDA
Execução de códigos
Amazon Web Service
ELASTIC BEANSTALK SageMaker
Desenvolvimento Machine Learning
• 2006
• Provedorde serviços LEX
• Nuvem RDS
Dev. interfaces
• 175 serviços Banco de dados
VPC
Rede privada na nuvem
REDSHIFT
S3
Data Warehouse Armazenamento
AWS
AWS
Gigantes que usam a AWS
AWS
AWS
AWS
AWS
AWS
AWS
AWS
Principais conceitos
SEGURANÇA
PERFORMANCE
CONFIABILDIADE
EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
AWS
SEGURANÇA
PERFORMANCE
RESPONSÁVEIS
Infraestrutura
CONFIABILDIADE
AWS CLIENTE EXCELENCIA OPERACIONAL
Configuração
OTIMIZAÇÃO DE RECURSOS
AWS
CONFIANÇA ZERO
SEGURANÇA
PERFORMANCE
CONFIABILDIADE
EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
AWS
CONFIANÇA ZERO
SEGURANÇA
• Identity and Access
PERFORMANCE
Management (IAM)
• Segurança da rede CONFIABILDIADE
• Criptografia
EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
AWS
CONFIANÇAGerenciamento
ZERO de
acesso SEGURANÇA
• Identity and Access
PERFORMANCE
Management (IAM)
• Segurança da rede CONFIABILDIADE
• Criptografia
EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
AWS
CONFIANÇA ZERO
SEGURANÇA
• Identity and Access
VPCs
PERFORMANCE
Management (IAM)
• Segurança da rede CONFIABILDIADE
• Criptografia
EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
AWS
CONFIANÇA ZERO
SEGURANÇA
• Identity and Access
Dados em trânsito e PERFORMANCE
Management (IAM)
• Segurança darepouso
rede CONFIABILDIADE
• Criptografia
EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
AWS
SERVIDORES GADO
SEGURANÇA
• Escalabilidade fornecida
PERFORMANCE
pela nuvem
CONFIABILDIADE
Configuração
• Considerar a escala EXCELENCIA OPERACIONAL
SELEÇÃO
OTIMIZAÇÃO DE RECURSOS
DIMENSIONAMENTO
AWS
SERVIDORES GADO
SEGURANÇA
• TIPO
Escalabilidade
DE SERVIÇO;
fornecida
PERFORMANCE
pela nuvem
GERENCIAMENTO;
CONFIGURAÇÃO. CONFIABILDIADE
Configuração
• Considerar a escala EXCELENCIA OPERACIONAL
SELEÇÃO
OTIMIZAÇÃO DE RECURSOS
DIMENSIONAMENTO
AWS
SERVIDORES GADO
SEGURANÇA
• Escalabilidade fornecida
PERFORMANCE
pela nuvem
VERTICAL E
HORIZONTAL. CONFIABILDIADE
Configuração
• Considerar a escala EXCELENCIA OPERACIONAL
SELEÇÃO
OTIMIZAÇÃO DE RECURSOS
DIMENSIONAMENTO
AWS
Resiliência SEGURANÇA
• Infra
PERFORMANCE
• Serviços
CONFIABILDIADE
RAIO DE ALCANCE
EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
AWS
Resiliência SEGURANÇA
• Infra
PERFORMANCE
• Serviços
CONFIABILDIADE
RAIO DE ALCANCE
EXCELENCIA OPERACIONAL
ISOLAMENTO LIMITE/
DE FALHAS RESTRIÇÕES OTIMIZAÇÃO DE RECURSOS
AWS
SEGURANÇA
Constante aprimoramento
PERFORMANCE
AUTOMAÇÃO
CONFIABILDIADE
INFRA POR CÓDIGO EXCELENCIA OPERACIONAL
OBSERVALIDADE OTIMIZAÇÃO DE RECURSOS
AWS
SEGURANÇA
Modelo de compra
PERFORMANCE
OPEX CONFIABILDIADE
CAOPX EXCELENCIA OPERACIONAL
OTIMIZAÇÃO DE RECURSOS
[Nome do curso]
Aula 2: AWS RDS
[NomeAPI
da aula]
REST - AWS RDS com
Java Spring
[Nome do palestrante]
[Posição]
Objetivos
1. RDS e Aurora
2. Instanciando um BD na RDS
3. Conectando a RDS com @configurationProperties
[Nome do curso]
Aula 2| Etapa 1:
RDS e Aurora
[Nome da aula]
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
RDS
Relational Database Service
• Serviço de BDs em nuvem
• Automatiza operações
• Compatível com BDs tradicionais
• Aurora DB
RDS Provisionamento
Relational Database Service
Detecção de falhas
• Automatiza operações - adminstração
Backup Pacthes
Recuperação
Redimensionamento
Configuração do DB
Reparo
RDS
Relational Database Service
• Compatível com BDs tradicionais
RDS
• Réplicas
O Amazon RDS facilita o uso da replicação para aumentar a
disponibilidade e a confiabilidade de cargas de trabalho de
produção. Com a opção de implantação Multi-AZ, você pode
executar cargas de trabalho de missão crítica com alta
disponibilidade e failover automatizado
RDS
MODOS DE USO
• Interface
• Linha de comando
• API
RDS
Atualização/correção
MODOS DE USO automática
• Interface
Escalabilidade fácil de
• Linha de comando
aplicar
• API
32 vCPUS 244 GIB RAM Uso de SSDs
Réplicas de leitura
RDS
• Snapshots
Os snapshots de banco de dados são backups de instância
iniciados pelo usuário e armazenados no Amazon S3, mantidos
até que você os exclua explicitamente.
RDS
SSL – Socket Secure Layer
• Segurança
Criptografar com AWS Key Management Service (KMS).
• dados ociosos em armazenamento subjacente;
• backups automáticos;
• as réplicas de leitura
• e os snapshots desses dados.
RDS
• Isolamento
VPC – Virtual Private Cloud
• Permissões
IAM – AWS Identity and Access
Management
RDS
Monitoramento e
métricas
• Capacidade de gerenciamento
Notificações e eventos Governança de configuração
RDS
Monitoramento e
métricas
• Capacidade de gerenciamento
Notificações e eventos Governança de configuração
• Rentabilidade Parar e iniciar
Pague pelo que usar Instância reservada
RDS
Relational Database Service
Aurora DB
3x
• Compatível com Mysql e Postegresql
• Mais rápido 5x
• Custo 1/10
• Gerenciado pelo RDS
RDS
Relational Database Service
Aurora DB
128 TB
• Escalável
• 15 Réplicas 3 zonas
• Backup contínuo S3
• Failover 30 Seg
RDS
Relational Database Service
Migração
RDS
Gigantes que usam Aurora
Aulado
[Nome 3:curso]
Criando um
projeto básico
[Nome da aula] com
Spring Boot
API REST - AWS RDS com
Java
[Nome do palestrante]
[Posição]
Spring
Objetivos
1. O que é Spring, spring boot e initializr?
2. Entendendo as dependências
3. Primeira API com spring boot
Aula 3| Etapa 1:
[Nome do curso]
O que é Spring, spring
[Nome da aula]
boot e initializr?
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
Spring
• Framework - [Link]
funcionalidade
Configuração
estrutura
Pacote de códigos
Spring
Container
• Controle dos métodos atrelado ao sotware
• Controle da execução
• Comum a frameworks
Modelo Imersão de Controle (IoC)
Spring
Baixo Acoplamento
• Definidas pelo container
• Declaração de dependências
• Atrelada a IoC
Injeção de Dependências
Spring
Baixo Acoplamento
• Definidas pelo container
• Declaração de dependências
• Atrelada a IoC
Injeção de Dependências
Spring
Auto-wiring
• Configuração XML
• Inferências do framework
Instânciando classes
Spring
Auto-wiring
• Configuração XML
• Inferências do framework
Uso de annotations
Instânciando classes
Spring
Spring
• Framework
Spring Data
[Link]
Spring JPA
Spring Boot
Spring H2
Spring Web Spring Web-flux
Spring boot
Módulo
• Stand-alone
• Grade de produção
• "Just run"
Spring-boot-starter
Configuração mínima
Spring initializr
Aula 3| Etapa 2:
[Nome do curso]
Entendendo as
[Nome da aula]
dependências
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
Spring
Dependências
Configuration processor
Spring Boot Mysql Driver
Spring web Spring JPA
Spring Dev Tools Spring HATEOAS
Spring
Configuration processor
Se houver problemas de auto-complete no
@[Link]
Spring
Spring Boot
Utilizar a configuração mínima do
spring-boot-starter
Spring
Spring Dev Tools
Métodos que facilitam o desenvolvimento
• Restart do server
Spring
Spring web Spring HATEOAS
Aplicações WEB APIs REST
• APIs • Links
Spring
Spring JPA Mysql Driver
Persitência de dados Driver Mysql
• BDs
[Nome do curso]
Aula 4: API REST com
[Nome
CRUD da aula]
API REST - AWS RDS com
Java Spring
[Nome do palestrante]
[Posição]
Objetivos
1. REST API e CRUD
2. Abstração e modelagem de domínio
[Nome do curso]
Aula 4| Etapa 1:
[Nome
REST API da aula]
E CRUD
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
API REST
O que é API?
API REST
Cliente
Chefe
O que é API?
Garçon
Padrão REST
• HTTP:
Comunicação entre API e Sistema
• Regras:
Arquitetura REST
GET/POST/
PUT/DELETE
{ ... }
RESPONSE
Restfull API
Cliente Database
Padrão REST
REpresentational State Transfer – REST
• Apresentada por Roy Fielding - 2000
[Link]
• Boas práticas - regras bem definidas
• Comunição entre sistemas
• Padrão de linguagem
Padrão REST
REpresentational State Transfer – REST
• Vantagens da padronização:
Maior compreenção
Redução do esforço Eficiência
Ganho em agilidade e Migração de sistemas
Padrão REST
REpresentational State Transfer – REST
• Vantagem - Postgresql
Independência da aplicação
SqlServer
API
Aplicação
MySql
Padrão REST
Modelo
• Client-server
• Stateless
• Cache
Constrains
• Uniform Interface
• Layered System
• Code on Demand (Opcional)
Padrão REST
Client-server
• Front x Back
Princípio da separação
Menos complexidade
Cliente
Organização dos Devs
Servidor
Padrão REST
Client-server
Cliente Servidor
Padrão REST
Client-server
Cliente Servidor
Padrão REST
Client-server
• Portabilidade Interface do
usuário
• Aumento da escalabilidade Cliente
• Simplifica os componentes dos
Servidor
servidores
Padrão REST
Stateless
• Request
Fornecer completo entendimento para o servidor
• Visibilidade
• Confiabilidade
• Escalabilidade
Padrão REST
Stateless
• Escolha – Tradeoff
Repetição de dados
Per-interaction overhead
Performance da rede x propriedades do REST
Padrão REST
Cache
• Objetivo
aumentar eficiência da rede
• Label Requests
Cacheable or non-cacheable
• Reduz latência e interação
Padrão REST
Uniform Interface
• Diferencial
Enfase de uma interface uniforme entre componentes
• Generalidade - princípio de eng. de software
Padrão REST
Uniform Interface
• Arquitetura de multiplas restrições
Identificação de recursos
Manipulação de recursos
representações - ex: verbos HTTP
Auto-descrição
Processamento da informação
Padrão REST
Uniform Interface
HATEOAS
Hypermedia As The Engine Of Application State.
Ex: métodos HTTPS
GET [Link]
Padrão REST
Layered System
• Composição hierárquiva de camadas
Encapsulamento
Proteção de dados
• Latência e overhead de dados
Compensado pelo uso de cache
Padrão REST
Code on Demand Optional
constraint
• Funcionalidade de clientes -> applets ou scripts
• Simplificação
redução de features à serem pré-implementadas
Sistema extensível x diminuição de visibilidade
Padrão REST
Por que utilizar?
Padrão comumente adotado
Conversa bem com o protocolo HTTP
Permite criação de APIs mais eficientes
Foco no desenvolvimento
API REST
Como facilitar o entendimento?
Modelo de maturidade de Richardson
API REST
Como facilitar o entendimento?
Modelo de maturidade de Richardson
API REST
Modelo de Maturidade de
Richardson
API REST
Nível 0
Protocolo de comunicação
HTTP
API REST
Nível 1
Definição de recursos por
substântivo no plural
API REST
Nível 1
Definição de recursos por
substântivo no plural
API REST
Nível 2
Correta utilização dos
verbos HTTP
API REST
Nível 3
Hypermedia as the Engine of
Application State
API REST
Métodos HTTP
Request
GET solicita um recurso do servidor
HEAD GET sem corpo de resposta
POST submete uma entidade a um recurso
PUT substituição de recursos pelos dados da requisição
DELETE remoção de um recurso
TRACE chamada de loop-back a um determinado recurso
OPTION opções de comunicação com recurso
CONNECT tunelamento identificado pelo recurso
PATCH modificação parcial
API REST
Status code
Response
200 OK: request bem sucedida e objeto enviado
301 Moved Permanently: objeto realocado nova URL no campo Location
400 Bad Request: resposta genérica - servidor não entendeu a mensagem
404 Not Found: o documento solicitado inexistente
505 HTTP Version Not
Supported: versão do protocolo não suportada pelo servidor
API REST
Navegação
entre os
recursos
Nível 3
Hypermedia as the Engine of
Application State
API REST
Nível 3
Hypermedia as the Engine of
Application State
O que é CRUD?
CREATE UPDATE
CRUD
READ
DELETE
O que é CRUD?
• Operações básicas
• Persistência de dados
• Implementação:
BD, lista, arquivos ...
O que é CRUD?
• Operações básicas
Ambiente propício
• Persistência de dados
• Implementação:
BD, lista, arquivos ...
API REST
O que é CRUD?
GET
POST
PUT
Cliente DELETE Servidor
Aula 4| Etapa 2:
[Nome do curso]
Abstração e
[Nome da aula]
modelagem do domínio
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
Modelagem
Vem da necessidade de
compreensão do sistema
Eletrônicos
Desenvolvimento Esquema de circuitos
Protótiopos
Construção
Plantas baixa
Modelagem
Orientação à objeto
Linguagem para especificação, construção,
visualização e documentação
Compreensão facilitada
Liberdade para o desenvolvedor
Modelagem
Perspectiva
Interpretada
Realidades
Solução
Construída
Modelagem
Diagramas
Visões Representada por Modelos
• Diferentes pontos
de vista
• Aspectos
particulares da
aplicação
Modelagem
Diagramas
Visões Representada por Modelos
• Diferentes pontos
de vista
• Aspectos
particulares da
aplicação
Modelagem
Projeto
Utilização varia de acordo com o
tamanho e complexidade
do projeto
Modelagem
Projeto
Utilização varia de acordo com o
tamanho e complexidade
do projeto
Caso de Interaçã
Classe
uso o
Modelagem
Principais
• Diagrama de Caso de Uso,
• Diagrama de Classe,
• Diagrama de Estado,
• Diagrama de Atividades,
• Diagrama de Sequência.
Modelagem
Narrativa das
funcionalidades do sistema Requisitos do
sistema
• Representação dos casos de
uso
Componentes
• Perspectiva do usuários
• Funcionalidade do sistema
• Centro do projeto
Modelagem
Narrativa das
funcionalidades do sistema Requisitos do
sistema
• Representação dos casos de
uso
• Perspectiva do usuários
• Funcionalidade do sistema
• Centro do projeto
Modelagem
Exemplo de caso de uso
Modelagem
Estático
Mesmo estado no ciclo de vida
Estrutura das classes
• Características Atributos e métodos
• Operações
Representa relacionamentos
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Agregação
Composição
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Forte
Agregação
Referência ao longo do
tempo Composição
Relacionamentos N-ários
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Forte
Agregação
Referência ao longo do
tempo Composição
Relacionamentos N-ários
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
+ Fraca que a associação
Agregação
As classes existem
sozinhas, mas há Composição
dependência
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
+ Fraca que a associação
Agregação
As classes existem
sozinhas, mas há Composição
dependência
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Coleção/container
Agregação
Não há dependência
Composição
Pertencimento
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Coleção/container
Agregação
Não há dependência
Composição
Pertencimento
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Variação da agregação
Agregação
Dependência
Composição
Pertencimento
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Variação da agregação
Agregação
Dependência
Composição
Pertencimento
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Herança (Orientação Obj.)
Agregação
Classes gerais
Composição
Atributos gerais e próprios
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Herança (Orientação Obj.)
Agregação
Classes gerais
Composição
Atributos gerais e próprios
Especialização/generalização
Modelagem
Diagrama de classe
Associação
• Relacionamentos Dependência
Multiplicidade dos
relacionamentos Agregação
Composição
Especialização/generalização
Modelagem
Diagrama de classe
Multiplicidade dos
relacionamentos
Colegiado Professor
Modelagem
Diagrama de classe
1 professor
1 colegiado
Multiplicidade dos
relacionamentos
Colegiado Professor
1 colegiado
N professores
Modelagem
Diagrama de classe
1 professor
1 colegiado
Multiplicidade dos
relacionamentos
Colegiado Professor
1 colegiado
N professores
Modelagem
Diagrama de classe
1 professor
Classe 1 colegiado
Relacionamento
Multiplicidade dos
relacionamentos
Colegiado Professor
1 colegiado Características
N professores e operações
Modelagem
Diagrama de classe
• Exemplo
Modelagem
Diagrama de classe
• Exemplo
Classe
Relacionamento
Multiplicidade
[Nome do curso]
Aula 6: API REST com
[Nome
HATEOAS da aula]
API REST - AWS RDS com
Java Spring
[Nome do palestrante]
[Posição]
API REST com HATEOAS
HATEOAS Modelo de maturidade
• 4° nível de maturidade de Richardson
Objetivo
• Quebrar acoplamento
• Mantendo clientes antigos e
novos API REST
API REST com HATEOAS
Atualizar aplicação Modelo de maturidade
• Método order de Richardson
HATEOAS
• Inserir links
API REST
[Nome do curso]
Aula 7: Documentando
[Nome da aula]
nossa API com Swagger
API REST - AWS RDS com
Java Spring
[Nome do palestrante]
[Posição]
[Nome do curso]
Aula 6| Etapa 1:
[Nome
O que é da aula]
Swagger?
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
Objetivos
1. O que é Swagger?
2. Documentando nossa API
Swagger
Por que documentar
uma API?
Swagger?
Swagger
Características:
• Framework - Spring fox
• Auxilia na criação, documentação e consumo de APIs
• YAML ou JSON
Swagger Editor
Swagger UI
Swagger Codegen
Swagger
Características:
• Framework - Spring fox
• Auxilia na criação, documentação e consumo de APIs
• YAML ou JSON
Swagger Editor
Swagger UI
Swagger Codegen
Swagger
Não!
Importar Springfox como depêndencia
Preciso configurar esse arquivo
na mão?
Swagger Editor
Swagger
Swagger Editor
Swagger
Características:
• Framework - Spring fox
• Auxilia na criação, documentação e consumo de APIs
• YAML ou JSON
Swagger Editor
Swagger UI
Swagger Codegen
Swagger
Swagger UI
[Nome do curso]
Continua
[Nome da ... aula]
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
[Nome do curso]
Dúvidas?
[Nome da aula]
> Fórum do curso
> Comunidade online (discord)
[Nome do palestrante]
[Posição]
[Nome do curso]
Referências
[Nome da aula]
Bibliográficas
API REST - AWS RDS com Java
Spring
[Nome do palestrante]
[Posição]
Referência Bibliográfica
• Computação em nuvem
[Link]
abra/[Link]
[Link]
abra/[Link]
Referência Bibliográfica
• Banco de dados
Livro - Ramez_Elmasri_e_Shamkant_B._Navathe-
Sistemas_de_Banco_de_Dados__-Addison_Wesley(2005)
[Link]
database/
• Conectando ao BD
[Link]
boot/docs/1.3.0.M2/reference/html/[Link]
Referência Bibliográfica
• AWS
[Link]
core-concepts/?e=gs2020&p=gsrc
[Link]
Referência Bibliográfica
• CRUD
[Link]
boot-h2-maven-e-jpa-hibernate-e-
documenta%C3%A7%C3%A3o-com-swagger-parte-1-
1040e2aae0ed
Referência Bibliográfica
• REST
[Link]
ml
[Link]
design-resource-modeling
Referência Bibliográfica
• Spring tutoriais
[Link]
[Link]
[Link]
[Link]
Referência Bibliográfica
• Spring
[Link]
[Link]