Skip to content

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

Challenge 3 - Processamento Assíncrono de Posts

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.

Sobre o projeto

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.

Objetivo do desafio

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.

Tecnologias utilizadas

  • Java
  • Spring Boot
  • Maven
  • H2 Database
  • Spring Data JPA
  • API REST
  • Processamento assíncrono
  • Integração com API externa

Fonte de dados externa

A aplicação utiliza a API pública JSONPlaceholder:

https://jsonplaceholder.typicode.com

Estados de processamento

Durante o processamento, um post pode passar pelos seguintes estados:

  • CREATED: estado inicial de um novo post
  • POST_FIND: busca dos dados básicos do post
  • POST_OK: dados básicos encontrados
  • COMMENTS_FIND: busca dos comentários do post
  • COMMENTS_OK: comentários encontrados
  • ENABLED: post processado com sucesso
  • DISABLED: post desabilitado
  • UPDATING: post aguardando reprocessamento
  • FAILED: erro durante o processamento

Endpoints

Processar post

POST /posts/{postId}

Processa um post a partir do ID informado.

Regras:

  • O postId deve ser um número entre 1 e 100;
  • Um post já existente não deve ser processado novamente por esse endpoint.

Listar posts

GET /posts

Retorna a lista de posts processados, incluindo dados básicos, comentários e histórico de estados.

Desabilitar post

DELETE /posts/{postId}

Desabilita um post que esteja no estado ENABLED.

Regras:

  • O postId deve ser um número entre 1 e 100;
  • O post deve estar no estado ENABLED.

Reprocessar post

PUT /posts/{postId}

Reprocessa um post que esteja no estado ENABLED ou DISABLED.

Regras:

  • O postId deve ser um número entre 1 e 100;
  • O post deve estar no estado ENABLED ou DISABLED.

Como executar

Pré-requisitos

  • Java instalado
  • Maven instalado ou uso do Maven Wrapper disponível no projeto

Acessar a pasta do projeto

cd challenge3

Executar com Maven Wrapper

No Windows:

mvnw.cmd spring-boot:run

No Linux/macOS:

./mvnw spring-boot:run

A aplicação deve subir na porta:

8080

Banco de dados

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-drop

Observação

Este 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.

About

API Spring Boot para processamento assíncrono de posts, consumo de API externa, histórico de estados e banco H2.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages