02.05-criando-um-projeto-spring-boot-com-spring-initializr
02.07-criando-um-controller-com-spring-mvc
02.08-restart-mais-rapido-da-aplicacao-com-devtools
02.09-o-que-e-injecao-de-dependencias
02.11-definindo-beans-com-component
02.12-injetando-dependencias-beans-spring
02.13-usando-configuration-e-bean-para-definir-beans
02.14-conhecendo-os-pontos-de-injecao-e-a-anotacao-autowired
02.15-dependencia-opcional-com-autowired
02.16-ambiguidade-de-beans-e-injecao-de-lista-de-beans
02.17-desambiguacao-de-beans-com-primary
02.18-desambiguacao-de-beans-com-qualifier
02.19-desambiguacao-de-beans-com-anotacao-customizada
02.20-mudando-o-comportamento-da-aplicacao-com-spring-profiles
02.21-criando-metodos-de-callback-do-ciclo-de-vida-dos-beans
02.22-publicando-e-consumindo-eventos-customizados
02.23-configurando-projetos-spring-boot-com-o-application-properties
02.25-criando-e-acessando-propriedades-customizadas-com-value
02.26-acessando-propriedades-com-configuration-properties
02.27-alterando-a-configuracao-do-projeto-dependendo-do-ambiente-com-spring-profiles
03.03-adicionando-jpa-e-configurando-o-datasource
03.04-mapeando-entidades-jpa
03.05-criando-as-tabelas-do-banco-a-partir-das-entidades
03.06-mapeando-o-id-da-entidade-para-autoincremento
03.07-importando-dados-de-teste-com-import-sql
03.08-consultando-objetos-no-banco-de-dados
03.09-adicionando-um-objeto-no-banco-de-dados
03.10-buscando-um-objeto-pelo-id-do-banco-de-dados
03.11-atualizando-um-objeto-no-banco-de-dados
03.12-excluindo-um-objeto-do-banco-de-dados
03.14-conhecendo-e-implementando-o-padrao-repository
03.15-conhecendo-e-usando-o-lombok
03.16-desafio-lombok-e-repositorio-de-restaurantes
03.17-mapeando-relacionamento-com-manytoone
03.18-a-anotacao-joincolumn
03.19-propriedade-nullable-de-column-e-joincolumn
03.20-desafio-mapeando-entidades
04.10-modelando-e-requisitando-um-collection-resource-com-get
04.11-desafio-collection-resource-de-estados
04.13-implementando-content-negotiation-para-retornar-json-ou-xml
04.14-consultando-singleton-resource-com-get-e-pathvariable
04.15-customizando-as-representacoes-xml-e-json-com-jsonignore-jsonproperty-e-jsonrootname
04.16-customizando-a-representacao-em-xml-com-wrapper-e-anotacoes-do-jackson
04.19-definindo-o-status-da-resposta-http-com-responsestatus
04.20-manipulando-a-resposta-http-com-responseentity
04.21-corrigindo-o-status-http-para-resource-inexistente
04.23-modelando-e-implementando-a-inclusao-de-recursos-com-post
04.25-modelando-e-implementando-a-atualizacao-de-recursos-com-put
04.26-modelando-e-implementando-a-exclusao-de-recursos-com-delete/algafood-api
04.27-implementando-a-camada-de-domain-services-e-a-importancia-da-linguagem-ubiqua
04.28-refatorando-a-exclusao-de-cozinhas-para-usar-domain-services
04.29-desafio-modelando-e-implementando-a-consulta-de-recursos-de-restaurantes
04.30-modelando-e-implementando-a-inclusao-de-recursos-de-restaurantes
04.31-modelando-e-implementando-a-atualizacao-de-recursos-de-restaurantes
04.32-desafio-implementando-servicos-rest-de-cidades-e-estados
04.33-analisando-solucao-para-atualizacao-parcial-de-recursos-com-patch
04.34-finalizando-a-atualizacao-parcial-com-a-api-de-reflections-do-spring
05.01-implementando-consultas-jpql-em-repositorios
05.04-refatorando-o-codigo-do-projeto-para-usar-o-repositorio-do-sdj
05.05-desafio-refatorando-todos-os-repositorios-para-usar-sdj
05.06-criando-consultas-com-query-methods
05.07-usando-as-keywords-para-definir-criterios-de-query-methods
05.08-conhecendo-os-prefixos-de-query-methods
05.09-usando-queries-jpql-customizadas-com-query
05.10-externalizando-consultas-jpql-para-um-arquivo-xml
05.11-implementando-um-repositorio-sdj-customizado
05.12-implementando-uma-consulta-dinamica-com-jpql
05.13-implementando-uma-consulta-simples-com-criteria-api
05.14-adicionando-restricoes-na-clausula-where-com-criteria-api
05.15-tornando-a-consulta-com-criteria-api-com-filtros-dinamicos
05.17-implementando-specifications-com-sdj
05.18-criando-uma-fabrica-de-specifications
05.19-injetando-o-proprio-repositorio-na-implementacao-customizada-e-a-anotacao-lazy
05.20-estendendo-o-jpa-repository-para-customizar-o-repositorio-base
06.01-mapeando-relacionamento-bidirecional-com-onetomany
06.02-mapeando-relacionamento-muitos-para-muitos-com-manytomany
06.03-analisando-o-impacto-do-relacionamento-muitos-para-muitos-na-rest-api
06.04-mapeando-classes-incorporaveis-com-embeddable-e-embedded
06.05-testando-e-analisando-o-impacto-da-incorporacao-de-classe-na-rest-api
06.06-mapeando-propriedades-com-creationtimestamp-e-updatetimestamp
06.07-desafio-mapeando-relacionamento-muitos-para-um
06.08-desafio-mapeando-relacionamento-um-para-muitos
06.09-desafio-mapeando-relacionamentos-muitos-para-muitos
06.12-alterando-a-estrategia-de-fetching-para-lazy-loading
06.13-alterando-a-estrategia-de-fetching-para-eager-loading
06.14-resolvendo-o-problema-do-n-1-com-fetch-join-na-jpql
07.06-adicionando-flyway-no-projeto-e-criando-a-primeira-migracao
07.07-evoluindo-o-banco-de-dados-com-novas-migracoes
07.08-criando-migracoes-complexas-com-remanejamento-de-dados
07.09-criando-migracao-a-partir-de-ddl-gerado-por-schema-generation
07.10.adicionando-dados-de-testes-com-callback-do-flyway
07.11-reparando-migracoes-com-erros
07.12-desafio-criando-migracoes-e-mapeando-as-entidades-pedido-e-itempedido
08.02-lancando-excecoes-customizadas-anotadas-com-responsestatus
08.03-lancando-excecoes-do-tipo-responsestatusexception
08.04-estendendo-responsestatusexception
08.05-simplificando-o-codigo-com-o-uso-de-responsestatus-em-exceptions
08.06-desafio-refatorando-os-servicos-rest
08.08-criando-a-exception-negocioexception
08.09-desafio-usando-a-exception-negocioexception
08.10-afinando-a-granularidade-e-definindo-a-hierarquia-das-exceptions-de-negocios
08.11-desafio-lancando-exceptions-de-granularidade-fina
08.12-tratando-excecoes-em-nivel-de-controlador-com-exceptionhandler
08.13-tratando-excecoes-globais-com-exceptionhandler-e-controlleradvice
08.14-desafio-implementando-exception-handler
08.15-criando-um-exception-handler-global-com-responseentityexceptionhandler
08.16-customizando-o-corpo-da-resposta-padrao-de-responseentityexceptionhandler
08.18-padronizando-o-formato-de-problemas-no-corpo-de-respostas-com-a-rfc7807
08.19-desafio-usando-o-formato-de-problemas-no-corpo-de-respostas
08.20-customizando-exception-handlers-de-responseentityexceptionhandler
08.21-habilitando-lancamento-de-exceptions-para-propriedades-desconhecidas-ou-ignoradas
08.22-habilitando-erros-na-desserializacao-de-propriedades-inexistentes-ou-ignoradas
08.23-desafio-tratando-propertybindingexception-na-desserializacao
08.24-lancando-exception-de-desserializacao-na-atualizacao-parcial-patch
08.25-desafio-tratando-exception-de-parametro-de-url-invalido
08.26-desafio-tratando-a-excecao-nohandlerfoundexception
08.27-desafio-tratando-outras-excecoes-nao-capturadas
08.28-estendendo-o-formato-do-problema-para-adicionar-novas-propriedades
08.29-desafio-estendendo-o-formato-do-problema
09.02-adicionando-constraints-e-validando-no-controller-com-valid
09.03-desafio-tratando-exception-de-violacao-de-constraints-de-validacao
09.04-estendendo-o-problem-details-para-adicionar-as-propriedades-com-constraints-violadas
09.05-conhecendo-e-adicionando-mais-constraints-de-validacao-no-modelo
09.06-validando-as-associacoes-de-uma-entidade-em-cascata
09.07-agrupando-e-restringindo-constraints-que-devem-ser-usadas-na-validacao
09.08-convertendo-grupos-de-constraints-para-validacao-em-cascata-com-convertgroup
09.09-desafio-adicionando-constraints-de-validacao-no-modelo
09.10-customizando-mensagens-de-validacao-na-anotacao-da-constraint
09.11-customizando-e-resolvendo-mensagens-de-validacao-globais-em-resource-bundle
09.12-desafio-customizando-mensagens-de-validacao
09.13-resolvendo-mensagens-de-validacao-com-resource-bundle-do-bean-validation
09.14-usando-o-resource-bundle-do-spring-como-resource-bundle-do-bean-validation
09.15-criando-constraints-de-validacao-customizadas-usando-composicao
09.16-criando-constraints-de-validacao-customizadas-com-implementacao-de-constraintvalidator
09.17-criando-constraints-de-validacao-customizadas-em-nivel-de-classe
09.18-ajustando-exception-handler-para-adicionar-mensagens-de-validacao-em-nivel-de-classe
09.19-executando-processo-de-validacao-programaticamente
09.20-desafio-tratando-a-exception-customizada-de-validacoes-programaticas
10.03-criando-e-rodando-um-teste-de-integracao-com-spring-boot-junit-e-assertj
10.03-criando-e-rodando-um-teste-de-integracao-com-spring-boot-junit-e-assertj_spring-boot-2.5.0-junit-5
10.04-escrevendo-bons-nomes-de-testes
10.05-desafio-escrevendo-testes-de-integracao
10.07-configurando-maven-failsafe-plugin-no-projeto
10.08-implementando-testes-de-api-com-rest-assured-e-validando-o-codigo-de-status-http
10.09-validando-o-corpo-da-resposta-http
10.10-criando-um-metodo-para-fazer-setup-dos-testes
10.10-criando-um-metodo-para-fazer-setup-dos-testes_spring-boot-2.5.0-junit-5
10.11-entendendo-o-problema-da-ordem-de-execucao-dos-testes
10.12-voltando-o-estado-inicial-do-banco-de-dados-para-cada-execucao-de-teste-com-callback-do-flyway
10.13-configurando-um-banco-de-testes-e-usando-testpropertysource
10.14-limpando-e-populando-o-banco-de-dados-de-teste
10.15-testando-endpoint-passando-parametro-de-url
10.16-desafio-refatorando-o-codigo-de-testes
10.17-desafio-escrevendo-testes-de-api
11.01-analisando-e-definindo-melhor-o-escopo-das-transacoes
11.02-refinando-o-payload-de-cadastro-com-jsonignoreproperties
11.03-criando-classes-de-mixin-para-usar-as-anotacoes-do-jackson
11.04-desafio-usando-jsonignoreproperties-e-jackson-mixin
11.07-configurando-e-refatorando-o-projeto-para-usar-utc
11.08-desafio-refatorando-o-codigo-para-usar-offsetdatetime
11.09-isolando-o-domain-model-do-representation-model-com-o-padrao-dto
11.10-implementando-a-conversao-de-entidade-para-dto
11.11-criando-dtos-para-entrada-de-dados-na-api
11.12-reftorando-e-criando-um-assembler-de-dto
11.13-desafio-refatorando-e-criando-um-disassembler-do-dto
11.14-adicionando-e-usando-o-modelmapper
11.15-entendendo-a-estrategia-padrao-do-modelmapper-para-correspondencia-de-propriedades
11.16-customizando-o-mapeamento-de-propriedades-com-modelmapper
11.17-mapeando-para-uma-instancia-destino-e-nao-um-tipo-com-modelmapper
11.18-revisando-e-ajustando-as-mensagens-de-validacao-com-o-uso-de-dtos
11.19-estrategias-de-nomes-de-propriedades-snake-case-vs-lower-camel-case
11.20-desafio-usando-dtos-como-representation-model
11.21-corrigindo-bug-de-tratamento-de-exception-de-integridade-de-dados-com-flush-do-jpa
12.04-implementando-os-endpoints-de-ativacao-e-inativacao-de-restaurantes
12.05-desafio-implementando-os-endpoints-de-formas-de-pagamento
12.06-adicionando-endereco-no-modelo-da-representacao-do-recurso-de-restaurante
12.07-refatorando-servico-de-cadastro-de-restaurante-para-incluir-endereco
12.08-desafio-implementando-os-endpoints-de-grupos
12.09-desafio-implementando-os-endpoints-de-usuarios
12.11-implementando-regra-de-negocio-para-evitar-usuarios-com-emails-duplicados
12.12-implementando-os-endpoints-de-associacao-de-formas-de-pagamento-em-restaurantes
12.13-desafio-implementando-os-endpoints-de-produtos
12.14-desafio-implementando-os-endpoints-de-abertura-e-fechamento-de-restaurantes
12.15-desafio-implementando-os-endpoints-de-associacao-de-grupos-com-permissoes
12.16-desafio-implementando-os-endpoints-de-associacao-de-usuarios-com-grupos
12.17-desafio-implementando-endpoints-de-associacao-de-usuarios-responsaveis-com-restaurante
12.18-implementando-ativacao-e-inativacao-em-massa-de-restaurantes
12.19-desafio-implementando-os-endpoints-de-consulta-de-pedidos
12.20-otimizando-a-query-de-pedidos-e-retornando-model-resumido-na-listagem
12.21-desafio-implementando-o-endpoint-de-emissao-de-pedidos
12.22-implementando-endpoint-de-transicao-de-status-de-pedidos
12.23-desafio-implementando-endpoints-de-transicao-de-status-de-pedidos
12.24-refatorando-o-codigo-de-regras-para-transicao-de-status-de-pedidos
12.25-usando-ids-vs-uuids-nas-uris-de-recursos
13.01-fazendo-projecao-de-recursos-com-jsonview-do-jackson
13.02-limitando-os-campos-retornados-pela-api-com-jsonfilter-do-jackson
13.03-limitando-os-campos-retornados-pela-api-com-squiggly
13.04-implementando-pesquisas-simples-na-api
13.06-implementando-pesquisas-complexas-na-api
13.07-tratando-bindexception-ao-enviar-parametros-de-url-invalidos
13.08-implementando-paginacao-e-ordenacao-em-recursos-de-colecao-da-api
13.09-desafio-implemetando-paginacao-e-ordenacao-de-pedidos
13.10-implementando-jsonserializer-para-customizar-representacao-de-paginacao
13.11-implementando-um-conversor-de-propriedades-de-ordenacao
13.12-discutindo-sobre-onde-implementar-as-consultas-com-dados-agregados
13.14-implementando-consulta-com-dados-agregados-de-vendas-diarias
13.15-desafio-adicionando-os-filtros-na-consulta-de-vendas-diarias
13.16-tratando-time-offset-na-agregacao-de-vendas-diarias-por-data
13.18-criando-um-layout-do-relatorio-jasperreports-de-vendas-diarias
13.19-estruturando-o-endpoint-e-servico-de-emissao-de-relatorio-em-pdf
13.20-preenchendo-um-relatorio-jasperreports-com-javabeans-e-gerando-bytes-do-pdf
14.02-implementando-upload-de-arquivo-com-multipart-form-data
14.03-validando-o-tamanho-maximo-do-arquivo
14.04-desafio-validando-o-content-type-do-arquivo
14.05-mapeando-entidade-fotoproduto-e-relacionamento-um-para-um
14.06-implementando-servico-de-cadastro-de-foto-de-produto
14.07-excluindo-e-substituindo-cadastro-de-foto-de-produto
14.08-implementando-o-servico-de-armazenagem-de-fotos-no-disco-local
14.09-integrando-o-servico-de-catalogo-de-fotos-com-o-servico-de-armazenagem
14.10-implementando-a-remocao-e-substituicao-de-arquivos-de-fotos-no-servico-de-armazenagem
14.11-desafio-implementando-recuperacao-de-foto-no-servico-de-armazenagem
14.12-desafio-implementando-endpoint-de-consulta-de-foto-de-produto
14.13-servindo-arquivos-de-fotos-pela-api
14.14-checando-media-type-ao-servir-arquivos-de-fotos
14.15-desafio-implementando-endpoint-de-exclusao-de-foto-de-produto
14.16-corrigindo-exception-handler-de-media-type-nao-aceita
14.17-amazon-s3-conhecendo-o-servico-de-storage-da-aws
14.20-criando-bean-de-propriedades-de-configuracao-dos-servicos-de-storage
14.21-adicionando-o-sdk-java-da-amazon-s3-no-projeto-e-criando-a-classe-da-implementacao-do-servico-de-storage
14.22-definindo-bean-do-client-da-amazon-s3-e-configurando-credenciais
14.23-implementando-a-inclusao-de-objetos-no-bucket-da-amazon-s3
14.24-desafio-implementando-a-exclusao-de-objetos-do-bucket-da-amazon-s3
14.25-implementando-a-recuperacao-de-foto-no-servico-de-storage-do-s3
14.26-selecionando-a-implementacao-do-servico-de-storage-de-fotos
15.02-configurando-o-projeto-para-envio-de-emails-usando-servidor-smtp
15.03-implementando-o-servico-de-infraestrutura-de-envio-de-emails-com-spring
15.04-usando-o-servico-de-envio-de-emails-na-confirmacao-de-pedidos
15.05-processando-template-do-corpo-de-emails-com-apache-freemarker
15.06-melhorando-o-texto-do-email-com-ftl-freemarker-template-language
15.07-formatando-valores-monetarios-com-ftl
15.08-desafio-implementando-servico-de-envio-de-email-fake
15.09-desafio-implementando-servico-de-envio-de-email-sandbox
15.11-publicando-domain-events-a-partir-do-aggregate-root
15.12-observando-e-reagindo-a-domain-events
15.13-reagindo-a-domain-events-em-fases-especificas-da-transacao
15.14-desafio-enviando-emails-no-cancelamento-de-pedidos
16.01-implementando-uma-chamada-na-rest-api-com-javascript
16.03-entendendo-o-funcionamento-basico-de-cors-e-habilitando-na-api
16.04-habilitando-cors-em-controladores-e-metodos-com-crossorigin
16.05-entendendo-o-funcionamento-de-preflight-do-cors
16.06-habilitando-cors-globalmente-no-projeto-da-api
16.07-desafio-implementando-uma-requisicao-get-com-javascript
16.08-implementando-formulario-de-cadastro-e-fazendo-requisicao-post-com-javascript
16.09-desafio-implementando-uma-requisicao-delete-com-javascript
16.10-implementando-um-client-da-rest-api-com-java-e-spring-resttemplate
16.11-tratando-respostas-com-codigo-de-erro-no-client-java
16.12-desafio-implementando-uma-requisicao-post-no-client-java
17.02-habilitando-o-cache-com-o-cabecalho-cache-control-e-a-diretiva-max-age
17.03-desafio-adicionando-o-cabecalho-cache-control-na-resposta
17.05-implementando-requisicoes-condicionais-com-shallow-etags
17.06-adicionando-outras-diretivas-de-cache-control-na-resposta-http
17.08-entendendo-e-preparando-a-implementacao-de-deep-etags
17.09-implementando-requisicoes-condicionais-com-deep-etags
17.10-desafio-implementando-requisicoes-condicionais-com-deep-etags
18.03-gerando-a-definicao-openapi-em-json-com-springfox-update
18.03-gerando-a-definicao-openapi-em-json-com-springfox
18.04-gerando-a-documentacao-da-api-em-html-com-swagger-ui-e-springfox-update
18.04-gerando-a-documentacao-da-api-em-html-com-swagger-ui-e-springfox
18.05-selecionando-os-endpoints-da-api-para-gerar-a-documentacao-update
18.05-selecionando-os-endpoints-da-api-para-gerar-a-documentacao
18.06-descrevendo-informacoes-da-api-na-documentacao-update
18.06-descrevendo-informacoes-da-api-na-documentacao
18.07-descrevendo-tags-na-documentacao-e-associando-com-controllers-update
18.07-descrevendo-tags-na-documentacao-e-associando-com-controllers
18.08-descrevendo-as-operacoes-de-endpoints-na-documentacao-update
18.08-descrevendo-as-operacoes-de-endpoints-na-documentacao
18.09-descrevendo-parametros-de-entrada-na-documentacao-update
18.09-descrevendo-parametros-de-entrada-na-documentacao
18.10-descrevendo-modelos-de-representacoes-e-suas-propriedades-update
18.10-descrevendo-modelos-de-representacoes-e-suas-propriedades
18.11-descrevendo-restricoes-de-validacao-de-propriedades-do-modelo-update
18.11-descrevendo-restricoes-de-validacao-de-propriedades-do-modelo
18.12-descrevendo-codigos-de-status-de-respostas-de-forma-global-update
18.12-descrevendo-codigos-de-status-de-respostas-de-forma-global
18.13-desafio-descrevendo-codigos-de-status-de-respostas-de-forma-global-update
18.13-desafio-descrevendo-codigos-de-status-de-respostas-de-forma-global
18.14-descrevendo-o-modelo-de-representacao-de-problema-update
18.14-descrevendo-o-modelo-de-representacao-de-problema
18.15-referenciando-modelo-de-representacao-de-problema-com-codigos-de-status-de-erro-update
18.15-referenciando-modelo-de-representacao-de-problema-com-codigos-de-status-de-erro
18.16-descrevendo-codigos-de-status-de-respostas-em-endpoints-especificos-update
18.16-descrevendo-codigos-de-status-de-respostas-em-endpoints-especificos
18.17-desacoplando-anotacoes-do-swagger-dos-controladores-update
18.17-desacoplando-anotacoes-do-swagger-dos-controladores
18.18-desafio-descrevendo-documentacao-de-endpoints-de-grupos-update
18.18-desafio-descrevendo-documentacao-de-endpoints-de-grupos
18.19-descrevendo-media-type-da-resposta-nos-endpoints-update
18.19-descrevendo-media-type-da-resposta-nos-endpoints
18.20-corrigindo-documentacao-com-substituicao-de-pageable-update
18.20-corrigindo-documentacao-com-substituicao-de-pageable
18.21-corrigindo-documentacao-com-substituicao-de-page-update
18.21-corrigindo-documentacao-com-substituicao-de-page
18.22-desafio-descrevendo-documentacao-de-endpoints-de-cozinhas-update
18.22-desafio-descrevendo-documentacao-de-endpoints-de-cozinhas
18.23-ignorando-tipos-de-parametros-de-operacoes-na-documentacao-update
18.23-ignorando-tipos-de-parametros-de-operacoes-na-documentacao
18.24-desafio-descrevendo-documentacao-de-endpoints-de-formas-de-pagamento-update
18.24-desafio-descrevendo-documentacao-de-endpoints-de-formas-de-pagamento
18.25-descrevendo-parametros-globais-em-operacoes
18.26-descrevendo-parametros-implicitos-em-operacoes-update
18.26-descrevendo-parametros-implicitos-em-operacoes
18.27-desafio-descrevendo-documentacao-de-endpoints-de-pedidos-update
18.27-desafio-descrevendo-documentacao-de-endpoints-de-pedidos
18.28-descrevendo-parametros-de-projecoes-em-endpoints-de-consultas-update
18.28-descrevendo-parametros-de-projecoes-em-endpoints-de-consultas
18.29-desafio-descrevendo-documentacao-de-endpoints-de-restaurantes-update
18.29-desafio-descrevendo-documentacao-de-endpoints-de-restaurantes
18.30-desafio-desrevendo-documentacao-de-endpoints-de-estados-update
18.30-desafio-desrevendo-documentacao-de-endpoints-de-estados
18.31-desafio-descrevendo-documentacao-de-endpoints-de-fluxo-de-pedidos-update
18.31-desafio-descrevendo-documentacao-de-endpoints-de-fluxo-de-pedidos
18.32-desafio-descrevendo-documentacao-de-endpoints-de-associacao-de-restaurantes-com-usuarios-update
18.32-desafio-descrevendo-documentacao-de-endpoints-de-associacao-de-restaurantes-com-usuarios
18.33-desafio-descrevendo-documentacao-de-endpoints-de-associacao-de-restaurantes-com-usuarios-update
18.33-desafio-descrevendo-documentacao-de-endpoints-de-associacao-de-restaurantes-com-usuarios
18.34-desafio-descrevendo-documentacao-de-endpoints-de-produtos-update
18.34-desafio-descrevendo-documentacao-de-endpoints-de-produtos
18.35-desafio-descrevendo-documentacao-de-endpoints-de-fotos-de-produtos-update
18.35-desafio-descrevendo-documentacao-de-endpoints-de-fotos-de-produtos
18.36-corrigindo-documentacao-no-swagger-ui-para-upload-de-arquivos-update
18.36-corrigindo-documentacao-no-swagger-ui-para-upload-de-arquivos
18.37-desafio-descrevendo-documentacao-de-endpoints-de-associacao-de-permissoes-com-grupos-update
18.37-desafio-descrevendo-documentacao-de-endpoints-de-associacao-de-permissoes-com-grupos
18.38-desafio-descrevendo-documentacao-de-endpoints-de-usuarios-update
18.38-desafio-descrevendo-documentacao-de-endpoints-de-usuarios
18.39-desafio-descrevendo-documentacao-de-endpoints-de-associacao-de-grupos-com-usuarios-update
18.39-desafio-descrevendo-documentacao-de-endpoints-de-associacao-de-grupos-com-usuarios
18.40-desafio-descrevendo-documentacao-de-endpoint-de-estatisticas-update
18.40-desafio-descrevendo-documentacao-de-endpoint-de-estatisticas
19.02-adicionando-a-uri-do-recurso-criado-no-header-da-resposta-update
19.02-adicionando-a-uri-do-recurso-criado-no-header-da-resposta
19.03-adicionando-o-spring-hateoas-no-projeto-update
19.03-adicionando-o-spring-hateoas-no-projeto
19.04-atualizando-o-projeto-para-spring-boot-2.2-spring-hateoas-1.0-update
19.04-atualizando-o-projeto-para-spring-boot-2.2-spring-hateoas-1.0
19.05-resolvendo-conflito-de-dependencias-com-spring-hateoas-e-springfox-update
19.05-resolvendo-conflito-de-dependencias-com-spring-hateoas-e-springfox
19.07-adicionando-hypermedia-na-representacao-de-recurso-unico-com-hal-update
19.07-adicionando-hypermedia-na-representacao-de-recurso-unico-com-hal
19.08-construindo-links-dinamicos-com-webmvclinkbuilder-update
19.08-construindo-links-dinamicos-com-webmvclinkbuilder
19.09-construindo-links-que-apontam-para-metodos-update
19.09-construindo-links-que-apontam-para-metodos
19.10-adicionando-hypermedia-na-representacao-de-recursos-de-colecao-update
19.10-adicionando-hypermedia-na-representacao-de-recursos-de-colecao
19.11-montando-modelo-de-representacao-com-representationmodelassembler-update
19.11-montando-modelo-de-representacao-com-representationmodelassembler
19.12-desafio-adicionando-hypermedia-nos-recursos-de-usuarios-update
19.12-desafio-adicionando-hypermedia-nos-recursos-de-usuarios
19.13-corrigindo-link-de-colecao-de-recurso-de-responsaveis-por-restaurante-update
19.13-corrigindo-link-de-colecao-de-recurso-de-responsaveis-por-restaurante
19.14-desafio-adicionando-hypermedia-nos-recursos-de-estados-update
19.14-desafio-adicionando-hypermedia-nos-recursos-de-estados
19.15-adicionando-hypermedia-em-recursos-com-paginacao-update
19.15-adicionando-hypermedia-em-recursos-com-paginacao
19.16-desafio-adicionando-hypermedia-em-recursos-de-pedidos-paginacao-update
19.16-desafio-adicionando-hypermedia-em-recursos-de-pedidos-paginacao
19.17-corrigindo-links-de-paginacao-com-ordenacao-update
19.17-corrigindo-links-de-paginacao-com-ordenacao
19.18-adicionando-links-com-template-variables-update
19.18-adicionando-links-com-template-variables
19.19-desafio-adicionando-template-variables-do-filtro-de-pedidos-update
19.19-desafio-adicionando-template-variables-do-filtro-de-pedidos
19.20-refatorando-construcao-e-inclusao-de-links-em-representation-model-update
19.20-refatorando-construcao-e-inclusao-de-links-em-representation-model
19.21-desafio-refatorando-construcao-e-inclusao-de-links-update
19.21-desafio-refatorando-construcao-e-inclusao-de-links
19.22-adicionando-links-de-transicoes-de-status-de-pedidos-update
19.22-adicionando-links-de-transicoes-de-status-de-pedidos
19.23-adicionando-links-condicionalmente-update
19.23-adicionando-links-condicionalmente
19.24-desafio-adicionando-hypermedia-nos-recursos-de-restaurantes-update
19.24-desafio-adicionando-hypermedia-nos-recursos-de-restaurantes
19.25-desafio-adicionando-links-condicionais-no-recurso-de-restaurante-update
19.25-desafio-adicionando-links-condicionais-no-recurso-de-restaurante
19.26-desafio-adicionando-template-variable-de-projecao-de-restaurantes-update
19.26-desafio-adicionando-template-variable-de-projecao-de-restaurantes
19.27-desafio-adicionando-hypermedia-nos-recursos-de-formas-de-pagamento-update
19.27-desafio-adicionando-hypermedia-nos-recursos-de-formas-de-pagamento
19.28-adicionando-links-com-template-variable-de-caminho-para-associacao-de-formas-de-pagamento-com-restaurante-update
19.28-adicionando-links-com-template-variable-de-caminho-para-associacao-de-formas-de-pagamento-com-restaurante
19.29-adicionando-links-com-template-variable-de-caminho-para-associacao-de-formas-de-pagamento-com-restaurante-update
19.29-adicionando-links-com-template-variable-de-caminho-para-associacao-de-formas-de-pagamento-com-restaurante
19.30-desafio-adicionando-links-de-associacao-de-restaurantes-com-responsaveis-update
19.30-desafio-adicionando-links-de-associacao-de-restaurantes-com-responsaveis
19.31-desafio-adicionando-hypermedia-nos-recursos-de-produtos-update
19.31-desafio-adicionando-hypermedia-nos-recursos-de-produtos
19.32-desafio-adicionando-links-para-recurso-de-foto-de-produto-update
19.32-desafio-adicionando-links-para-recurso-de-foto-de-produto
19.33-desafio-adicionando-hypermedia-nos-recursos-de-grupos-update
19.33-desafio-adicionando-hypermedia-nos-recursos-de-grupos
19.34-desafio-adicionando-links-de-associacao-de-grupos-com-permissoes-update
19.34-desafio-adicionando-links-de-associacao-de-grupos-com-permissoes
19.35-desafio-adicionando-links-de-associacao-de-usuarios-com-grupos-update
19.35-desafio-adicionando-links-de-associacao-de-usuarios-com-grupos
19.36-implementando-o-root-entry-point-da-api-update
19.36-implementando-o-root-entry-point-da-api
19.37-desafio-implementando-endpoint-com-links-de-recursos-de-estatisticas-update
19.37-desafio-implementando-endpoint-com-links-de-recursos-de-estatisticas
19.38-comprimindo-as-respostas-http-com-gzip-update
19.38-comprimindo-as-respostas-http-com-gzip
19.39-corrigindo-as-propriedades-de-links-na-documentacao-update
19.39-corrigindo-as-propriedades-de-links-na-documentacao
19.40-corrigindo-a-documentacao-dos-endpoints-de-cidades-update
19.40-corrigindo-a-documentacao-dos-endpoints-de-cidades
19.41-corrigindo-a-paginacao-na-documentacao-update
19.41-corrigindo-a-paginacao-na-documentacao
19.42-desafio-corrigindo-a-documentacao-dos-endpoints-de-estados-update
19.42-desafio-corrigindo-a-documentacao-dos-endpoints-de-estados
19.43-desafio-corrigindo-a-documentacao-dos-endpoints-de-formas-de-pagamento-update
19.43-desafio-corrigindo-a-documentacao-dos-endpoints-de-formas-de-pagamento
19.44-desafio-corrigindo-a-documentacao-dos-endpoints-de-grupos-update
19.44-desafio-corrigindo-a-documentacao-dos-endpoints-de-grupos
19.45-desafio-corrigindo-a-documentacao-dos-endpoints-de-pedidos-paginacao-update
19.45-desafio-corrigindo-a-documentacao-dos-endpoints-de-pedidos-paginacao
19.46-desafio-corrigindo-a-documentacao-dos-endpoints-de-produtos-update
19.46-desafio-corrigindo-a-documentacao-dos-endpoints-de-produtos
19.47-desafio-corrigindo-a-documentacao-dos-endpoints-de-restaurantes-e-usuarios-update
19.47-desafio-corrigindo-a-documentacao-dos-endpoints-de-restaurantes-e-usuarios
19.48-removendo-modelo-de-representacao-inutilizado-da-documentacao-update
19.48-removendo-modelo-de-representacao-inutilizado-da-documentacao
20.10-preparando-o-projeto-para-versionamento-da-api-por-media-type-update
20.10-preparando-o-projeto-para-versionamento-da-api-por-media-type
20.11-implementando-o-versionamento-da-api-por-media-type-update
20.11-implementando-o-versionamento-da-api-por-media-type
20.12-definindo-a-versao-padrao-da-api-quando-o-media-type-nao-e-informado-update
20.12-definindo-a-versao-padrao-da-api-quando-o-media-type-nao-e-informado
20.13-implementando-o-versionamento-da-api-por-uri-update
20.13-implementando-o-versionamento-da-api-por-uri
20.14-desafio-refatorando-controladores-para-adicionar-v1-nas-uris-update
20.14-desafio-refatorando-controladores-para-adicionar-v1-nas-uris
20.15-desafio-adicionando-os-recursos-de-cozinhas-na-v2-da-api-update
20.15-desafio-adicionando-os-recursos-de-cozinhas-na-v2-da-api
20.16-gerando-documentacao-das-versoes-da-api-com-springfox-e-swagger-ui-update
20.16-gerando-documentacao-das-versoes-da-api-com-springfox-e-swagger-ui
20.17-desafio-revisando-documentacao-v2-da-api-update
20.17-desafio-revisando-documentacao-v2-da-api
20.18-depreciando-uma-versao-da-api-update
20.18-depreciando-uma-versao-da-api
20.19-desligando-uma-versao-da-api-update
20.19-desligando-uma-versao-da-api
21.01-introducao-ao-logback-e-slf4j
21.02-desafio-registrando-logs-de-exceptions-nao-tratadas
21.04-configurando-o-appender-do-loggly-no-logback
21.05-configurando-o-logback-para-alternar-as-configuracoes-por-spring-profiles
22.02-adicionando-seguranca-na-api-com-spring-security
22.03-configurando-spring-security-com-http-basic
22.04-configurando-autenticacao-de-usuarios-em-memoria
22.08-criando-o-projeto-do-authorization-server-com-spring-security-oauth2
22.09-configurando-o-authorization-server-com-o-fluxo-password-credentials-e-opaque-tokens
22.10-configurando-o-endpoint-de-introspeccao-de-tokens-no-authorization-server
22.11-configurando-o-resource-server-com-a-nova-stack-do-spring-security
22.13-configurando-o-refresh-token-grant-type-no-authorization-server
22.14-configurando-a-validade-e-nao-reutilizacao-de-refresh-tokens
22.16-configurando-o-client-credentials-grant-type-no-authorization-server
22.18-configurando-o-authorization-code-grant-type
22.19-testando-o-fluxo-authorization-code-com-um-client-javascript
22.20-configurando-o-fluxo-implicit-grant-type
22.23-implementando-o-suporte-a-pkce-com-o-fluxo-authorization-code
22.24-testando-o-fluxo-authorization-code-com-pkce-com-o-metodo-plain
22.26-testando-um-cliente-javascript-com-pkce-e-authorization-code
23.02-configurando-o-redistokenstore
23.05-gerando-jwt-com-chave-simetrica-hmac-sha-256-no-authorization-server
23.06-configurando-o-resource-server-para-jwt-assinado-com-chave-simetrica
23.09-assinando-o-jwt-com-rsa-sha-256-chave-assimetrica
23.10-desafio-criando-bean-de-propriedades-de-configuracao-do-keystore
23.12-configurando-a-validacao-de-jwt-no-resource-server-com-a-chave-publica
23.13-revisando-o-fluxo-de-aprovacao-do-authorization-code-com-jwt
23.14-autenticando-usuario-com-dados-do-banco-de-dados
23.15-desafio-refatorando-servicos-de-usuarios-para-usar-bcrypt
23.16-adicionando-claims-customizadas-no-payload-do-jwt
23.17-obtendo-usuario-autenticado-do-resource-server
23.18-definindo-e-criando-as-permissoes-de-acesso
23.19-carregando-as-permissoes-concedidas-na-autenticacao
23.20-carregando-as-granted-authorities-e-restringindo-acesso-a-endpoints-da-api
23.21-method-security-restringindo-acesso-com-preauthorize-e-spel
23.22-desafio-tratando-accessdeniedexception-no-exceptionhandler
23.23-simplificando-o-controle-de-acesso-em-metodos-com-meta-anotacoes
23.25-carregando-granted-authorities-dos-escopos-do-oauth2-no-resource-server
23.26-restringindo-acesso-a-endpoints-por-escopos-do-oauth2
23.27-desafio-restringindo-acesso-dos-endpoints-de-restaurantes
23.28-restringindo-acessos-de-forma-contextual-sensivel-a-informacao
23.29-restringindo-acessos-com-postauthorize
23.30-desafio-restringindo-acessos-ao-endpoints-de-pesquisa-de-pedidos
23.31-desafio-restringindo-acessos-aos-endpoints-de-transicao-de-status-de-pedidos
23.32-desafio-restringindo-acessos-aos-endpoints-de-formas-de-pagamentos
23.33-desafio-restringindo-acessos-aos-endpoints-de-cidades-e-estados
23.34-desafio-restringindo-acessos-aos-endpoints-de-usuarios-grupos-e-permissoes
23.35-desafio-restringindo-acessos-aos-endpoints-de-estatisticas
23.36-configurando-os-clientes-oauth2-em-um-banco-de-dados-sql
23.37-cadastrando-clientes-oauth2-no-banco-de-dados-e-testando-a-emissao-de-tokens
23.38-corrigindo-logica-de-restricao-de-acessos-para-client-credentials-flow
23.39-gerando-links-do-hal-dinamicamente-de-acordo-com-permissoes-do-usuario
23.40-desafio-gerando-links-do-hal-dinamicamente-de-acordo-com-permissoes
23.41-juntando-o-resource-server-com-o-authorization-server-no-mesmo-projeto
23.42-ajustando-a-documentacao-da-api-para-suporte-a-oauth2
23.43-customizando-a-pagina-de-login
23.44-customizando-a-pagina-de-oauth2-approval
23.45-implementando-o-endpoint-do-json-web-key-set-jwks
23.46-externalizando-o-keystore-criando-um-protocolresolver-para-base64-update
23.46-externalizando-o-keystore-criando-um-protocolresolver-para-base64
24.09-construindo-a-imagem-da-aplicacao-com-dockerfile
24.13.conhecendo-e-usando-docker-compose
24.14-controlando-a-ordem-de-inicializacao-com-wait-for-it
24.15-escalando-um-servico-com-docker-compose
24.16-entendendo-o-poor-mans-load-balancer-dns-round-robin
24.17-configurando-um-proxy-reverso-com-nginx
24.19-adicionando-um-container-do-redis-no-arquivo-do-docker-compose
24.20-configurando-o-spring-session-data-redis
24.21-resolvendo-problemas-com-storage-de-authorization-codes
25.02-mais-organizacao-das-propriedades-do-projeto-com-spring-profiles
25.03-dependencia-de-javamailsender-nao-satisfeita-melhorando-o-uso-da-heranca
25.27-configurando-o-protocolo-https-nos-links-da-api-com-hateoas
26.02-removendo-springfox
26.03-adicionando-springdoc-no-projeto
26.04-configurando-multiplas-documentacoes-em-um-projeto
26.05-adicionado-login-com-oauth2-no-swagger-ui
26.07-adicionando-operacoes
26.08-descrevendo-parametros-de-entrada-na-documentacao
26.09-descrevendo-modelos-de-representacoes-e-suas-propriedades
26.10-descrevendo-restricoes-de-validacao-de-propriedades-do-modelo
26.11-descrevendo-codigos-de-status-de-respostas-de-forma-global
26.12-descrevendo-codigos-de-status-de-respostas-em-endpoints-especificos
26.13-descrevendo-codigos-de-status-de-respostas-de-forma-global-para-cada-tipo-de-metodo-http
26.14-descrevendo-o-modelo-de-representacao-de-problema
26.15-referenciando-modelo-de-representacao-de-problema-com-codigos-de-status-de-erro
26.16-desafio-descrevendo-documentacao-de-endpoints-de-grupos
26.17-corrigindo-documentacao-com-substituicao-de-pageable
26.18-desafio-descrevendo-documentacao-de-endpoints-de-cozinhas
26.19-desafio-descrevendo-documentacao-de-endpoints-de-formas-de-pagamento
26.20-desafio-descrevendo-documentacao-de-endpoints-de-pedidos
26.21-descrevendo-parametros-de-projecoes-em-endpoints-de-consultas
26.22-descrevendo-media-type-da-resposta-nos-endpoints
26.23-corrigindo-documentacao-no-swagger-ui-para-upload-de-arquivos
26.24-desafio-descrevendo-documentacao-de-endpoints-de-restaurantes
26.25-desafio-descrevendo-documentacao-de-endpoints-de-estados
26.26.desafio-descrevendo-documentacao-de-endpoints-de-fluxo-de-pedidos
26.27.desafio-descrevendo-documentacao-de-endpoints-de-associacao-de-restaurantes-com-formas-de-pagamento
26.28.desafio-descrevendo-documentacao-de-endpoints-de-associacao-de-restaurantes-com-usuarios
26.29.desafio-descrevendo-documentacao-de-endpoints-de-produtos
26.30.desafio-descrevendo-documentacao-de-endpoints-de-fotos-de-produtos
26.31.desafio-descrevendo-documentacao-de-endpoints-de-associacao-de-permissoes-com-grupos
26.32.desafio-descrevendo-documentacao-de-endpoints-de-usuarios
26.33.desafio-descrevendo-documentacao-de-endpoints-de-associacao-de-grupos-com-usuarios-
26.34.desafio-descrevendo-documentacao-de-endpoint-de-estatisticas
26.35-desafio-descrevendo-documentacao-de-endpoint-de-permissoes
26.36-corrigindo-documentacao-ocultado-root-entry-point
27.02-removendo-o-authorization-server-antigo-do-projeto
27.03-configuracao-inicial-do-authorization-server-com-access-token-opaco
27.04-testando-com-fluxo-client-credentials-com-postman
27.05-inspecionando-token-opaco-usando-endpoint-oauth2-introspect
27.06-configurando-resource-server-com-token-opaco
27.07-armazenando-autorizacoes-no-banco-de-dados
27.08-revogando-access-token-com-oauth2-revoke
27.09-configurando-geracao-de-access-token-jwt-no-authorization-server
27.10-configurando-resource-server-com-token-jwt
27.11-implementando-cliente-com-fluxo-authorization-code-pkce-s256
27.12-testando-fluxo-authorization-code-pkce-s256-e-corrigindo-problemas
27.13-implementando-cliente-com-fluxo-refresh-token
27.14-customizando-o-token-jwt-com-dados-do-usuario
27.15-lendo-informacoes-customizadas-do-jwt-no-resource-server
27.16-implementado-repository-de-clients-do-oauth2-via-jdbc
27.17-customizando-tela-de-login-do-authorization-server
27.18-customizando-tela-de-consentimento
27.19-armazenando-autorizacoes-consentimento-no-banco-de-dados
27.20-criando-tela-de-listagem-dos-clientes-com-consentimentos-permitidos
27.21-revogando-consentimentos-e-autorizacoes-dos-clientes
28.01-principais-mudancas
28.02-removendo-componentes-incompativeis
28.03-atualizando-componentes-e-dep-do-spring-3
28.04-alterações-jakarta-ee-9-jpa-3.0
28.05-atualizando-springdoc
28.06-atualizando-spring-authorization-server
ESR - Diagrama de classes.png
ESR Diagrama banco de dados.png
Injecao de Dependencias.mdj
open-api-collection-hateoas.json
Folders and files Name Name Last commit message
Last commit date
parent directory Sep 17, 2019
View all files
You can’t perform that action at this time.