Como fiz:

Criação do projeto:

  • Criei gerei o zip do projeto no https://start.spring.io/ com as seguintes dependências:
  • Spring Web já que seria uma aplicação web.
  • Spring Boot DevTools - para recarregar a aplicação de forma rápida

Anime

  • Fiz a conversão do corpo json resposta do anime pra fazer as models usando o https://json2csharp.com/json-to-pojo
  • Dividi as inner classes de anime para classes, e retirei atributos que não usaria/não achei necessários, e gerei os getters e setters.
  • Criei uma classe de Response, que vai conter a lista de Animes,e gerei os getters e setters.

WebClient

  • Defini o header e a base url na classe Client
  • injetei ela no AnimeService com o endereço complementar da API externa, montei a chamada pro primeiro endpoint pra teste, e criei ele (/anime/busca/{texto}).
  • Testei com o postman, e assim fui criando os demais endpoints do Anime e testando.

Manga

  • Fiz a conversão pra fazer a model do Mangá.
  • Desmembrei as Inner Classes em classes normais e gerei seus getters e setters.
  • Criei a MangaResponse, que vai conter a lista de Mangas, e gerei seu getter e setter.
  • Criei as chamadas no MangaService e as usei no controller.

Swagger

  • Adicionei e configurei o swagger pra facilitar testes de quem quiser testar.

Heroku

  • Criei na raiz do projeto o arquivo system.properties contendo: java.runtime.version=11
  • Crei uma nova aplicação pra deploy no heroku com o nome "challengekitsu"
  • Conectei o Heroku à branch heroku do repositório, e deixei selecionado o deploy automático

Episodes

  • Fiz a conversão de Episodes e destrinchei ele
  • Criei o EpisodesResponse para ser usado nos serviços
  • Criei os serviços de pesquisa por id e lista todos os episódios
  • Usei os serviços no Controller, testei, mas até o momento só está funcionando o listarTodosEpisódios.

Branches

  • Main -> Usei para a criação do projeto, depois disso comecei a usar a DEV.
  • Dev -> Branch de desenvolvimento.
  • Client -> Usei pra testar oo WebClient, quando estava funcionando mandei pra DEV.
  • Swagger -> Usei para colocar o swagger no projeto, quando funcionando, abri o pull request pra branch DEV.
  • Heroku -> Branch do deploy.

Como Testar o código:

Protótipo de banco de dados:

https://drive.google.com/drive/folders/1VW0icPsb432XV0bmfn1yi-JomjTtuMQi?usp=sharing