Projeto desenvolvido como parte de um challenge do Back-end Journey (Spring Boot) - AWS Cloud Context no Scholarship Program – Compass UOL, que ocorreu entre os dias 05/06/2023 e 01/11/2023, com foco na criação de uma API em Java/Spring Boot para processamento assíncrono de posts.
O objetivo do desafio é criar uma aplicação capaz de buscar posts em uma API externa, enriquecer esses dados com comentários e manter um histórico dos estados de processamento.
A aplicação expõe endpoints REST para processar, consultar, desabilitar e reprocessar posts.
Os dados externos são obtidos a partir da API pública JSONPlaceholder.
A aplicação deve:
- Receber uma solicitação para processar um post;
- Buscar os dados básicos do post em uma API externa;
- Buscar os comentários relacionados ao post;
- Registrar o histórico de estados do processamento;
- Permitir a consulta dos posts processados;
- Permitir desabilitar posts processados;
- Permitir reprocessar posts habilitados ou desabilitados.
- Java
- Spring Boot
- Maven
- H2 Database
- Spring Data JPA
- API REST
- Processamento assíncrono
- Integração com API externa
A aplicação utiliza a API pública JSONPlaceholder:
https://jsonplaceholder.typicode.com
Durante o processamento, um post pode passar pelos seguintes estados:
CREATED: estado inicial de um novo postPOST_FIND: busca dos dados básicos do postPOST_OK: dados básicos encontradosCOMMENTS_FIND: busca dos comentários do postCOMMENTS_OK: comentários encontradosENABLED: post processado com sucessoDISABLED: post desabilitadoUPDATING: post aguardando reprocessamentoFAILED: erro durante o processamento
POST /posts/{postId}Processa um post a partir do ID informado.
Regras:
- O
postIddeve ser um número entre 1 e 100; - Um post já existente não deve ser processado novamente por esse endpoint.
GET /postsRetorna a lista de posts processados, incluindo dados básicos, comentários e histórico de estados.
DELETE /posts/{postId}Desabilita um post que esteja no estado ENABLED.
Regras:
- O
postIddeve ser um número entre 1 e 100; - O post deve estar no estado
ENABLED.
PUT /posts/{postId}Reprocessa um post que esteja no estado ENABLED ou DISABLED.
Regras:
- O
postIddeve ser um número entre 1 e 100; - O post deve estar no estado
ENABLEDouDISABLED.
- Java instalado
- Maven instalado ou uso do Maven Wrapper disponível no projeto
cd challenge3No Windows:
mvnw.cmd spring-boot:runNo Linux/macOS:
./mvnw spring-boot:runA aplicação deve subir na porta:
8080
O projeto utiliza banco H2 em memória, conforme requisito do challenge.
A configuração esperada para o Hibernate é:
spring.jpa.hibernate.ddl-auto=create-dropEste projeto foi desenvolvido como exercício de aprendizado durante o Programa de Bolsas.
O foco principal do desafio era praticar construção de APIs REST, consumo de API externa, processamento assíncrono, persistência em banco H2 e controle de estados de processamento.