Skip to content

Código produzido no curso Especialista Spring REST da Algaworks

Notifications You must be signed in to change notification settings

dvsilva/algaworks-especialista-spring-rest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Especialista Spring REST da Algaworks

Descrição: Treinamento imersivo focado em back-end, do básico ao ultra avançado sobre REST APIs com Spring .

Link: 🔗Curso Especialista Spring REST by Algaworks

💻 Projeto do curso

AlgaFood - Projeto para gerenciamento de restaurantes incluindo cadastros de cozinhas, pedidos, produtos, fotos de produtos, formas de pagamento, usuários, grupos, permissões, cidades e estados. Envolve autenticação de usuários com restrição de enpoints com base nas permissões do usuário.

📷 Demonstração

Projeto - AlfaFood - Demonstração Swagger em Gif Animado

Projeto - AlfaFood - Demonstração Postman em Gif Animado

🚀 Conceitos e tecnologias

✔️ Spring e Injeção de Dependências

✔️ JPA, Hibernate e Flyway

✔️ Spring Data JPA

✔️ Domain-Driven Design (DDD)

✔️ Fundamentos avançados de REST com Spring

✔️ Validações com Bean Validation

✔️ Tratamento e modelagem de erros da API

✔️ Testes de integração (REST Assured, JUnit, AssertJ e Maven Failsafe Plugin)

✔️ Boas práticas e modelagem avançada de APIs

✔️ Modelagem de projeções, pesquisas e relatórios (JsonView, Squiggly e Jasper Reports)

✔️ Upload e download de arquivos (Local e Amazon S3)

✔️ Envio de e-mails transacionais (Apache FreeMarker)

✔️ Cache de HTTP (ETags)

✔️ Documentação com OpenAPI (Swagger e SpringFox)

✔️ HATEOAS e Discoverability

✔️ CORS e consumo de APIs com Java e JavaScript

✔️ Segurança com Spring Security, OAuth2 e JWT (Opaque Tokens e Transparent Tokens)

✔️ Cloud-native APIs

✔️ Docker, DockerHub e Docker compose

✔️ Deploy em produção na nuvem

✔️ Amazon AWS (EC2, EKS, ECS, Fargate, ELB, ECR, RDS, S3, Systems Manager Parameter Store, Certificate manager), RedisLabs e PWS

✔️ Configuração e gerenciamento de logs (Loggly)

✔️ Versionamento de APIs (Media Types e URIs)

⚙️ Configurações

  • Ferramentas necessárias
MySQL, Redis, Amazon S3 (opcional), SendGrid / Mailtrap (opcional) e Postman
  • Gerando um arquivo JKS com um par de chaves
$ keytool -genkeypair -alias algafood -keyalg RSA -keypass 123@algafoodprod -keystore algafood-prod.jks -storepass 123@algafoodprod -validity 3650

$ cat algafood-prod.jks | base64
  • Para rodar a API configurar no arquivo aplication.properties os seguintes parâmetros
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=

algafood.storage.tipo="s3 ou local"
algafood.storage.s3.id-chave-acesso=
algafood.storage.s3.chave-acesso-secreta=
algafood.storage.s3.bucket=
algafood.storage.s3.regiao=

algafood.email.impl="fake, sandbox ou smtp"
algafood.email.sandbox.destinatario="destinatario para tipo de envio sandbox"
algafood.email.remetente=
spring.mail.host=
spring.mail.port=
spring.mail.username=
spring.mail.password=

logging.loggly.token=

algafood.jwt.keystore.jks-location=
algafood.jwt.keystore.password=
algafood.jwt.keystore.keypair-alias=
  • Para rodar a API na AWS configurar os seguintes parâmetros no serviço Parameter Store
/prod/algafood-api-service/DB_HOST =
/prod/algafood-api-service/SPRING_DATASOURCE_USERNAME =
/prod/algafood-api-service/SPRING_DATASOURCE_PASSWORD =

/prod/algafood-api-service/SPRING_REDIS_HOST =
/prod/algafood-api-service/SPRING_REDIS_PORT =
/prod/algafood-api-service/SPRING_REDIS_PASSWORD =

/prod/algafood-api-service/LOGGING_LOGGLY_TOKEN =

/prod/algafood-api-service/ALGAFOOD_JWT_KEYSTORE_JKS_LOCATION =
/prod/algafood-api-service/ALGAFOOD_JWT_KEYSTORE_PASSWORD =
/prod/algafood-api-service/ALGAFOOD_JWT_KEYSTORE_KEYPAIR_ALIAS =

/prod/algafood-api-service/ALGAFOOD_STORAGE_S3_ID_CHAVE_ACESSO =
/prod/algafood-api-service/ALGAFOOD_STORAGE_S3_CHAVE_SECRETA =
/prod/algafood-api-service/ALGAFOOD_STORAGE_S3_BUCKET =
/prod/algafood-api-service/ALGAFOOD_STORAGE_S3_REGIAO =

/prod/algafood-api-service/ALGAFOOD_EMAIL_REMETENTE =
/prod/algafood-api-service/SPRING_MAIL_HOST =
/prod/algafood-api-service/SPRING_MAIL_PORT =
/prod/algafood-api-service/SPRING_MAIL_USERNAME =
/prod/algafood-api-service/SPRING_MAIL_PASSWORD =

☎️ Contato

Linkedin https://www.linkedin.com/in/danyllo-valente-da-silva-3569b460

📮 E-mail [email protected]

About

Código produzido no curso Especialista Spring REST da Algaworks

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages