API REST responsavel por realizar operações de buscas e escritas em banco de dados local HSQLDB (HyperSQL DataBase) e retornar os dados em JSON.
Ela oferece endpoints para criar, obter detalhes e listar eventos, bem como registrar participantes em eventos e gerar crachás para os participantes.
- Java Development Kit (JDK) versão 17
- IDE Java (como Eclipse ou IntelliJ) ou um editor de texto para escrever o código
- Fazer download das dependências e plugins utilizando maven
- Postman (opcional, para testar os endpoints localmente)
Pré-requisitos: Java JDK 17
# clonar repositório
git clone https://github.com/ArturWood/api-pass-in.git
# entrar na pasta do projeto
cd api-pass-in
# executar o projeto
./mvnw spring-boot:run
A aplicação expõe os seguintes endpoints:
GET /events/{eventId}
: Recupera os detalhes de um evento específico com base no ID do evento.POST /events
: Cria um novo evento com base nos dados fornecidos no corpo da solicitação.GET /events/{eventId}/attendees
: Lista os participantes de um evento específico com base no ID do evento.POST /events/{eventId}/attendees
: Registra um novo participante em um evento específico com base no ID do evento e nos dados fornecidos no corpo da solicitação.GET /attendees/{attendeeId}/badge
: Recupera o crachá de um participante com base no ID do participante.POST /attendees/{attendeeId}/check-in
: Registra o check-in de um participante com base no ID do participante.
O projeto possui a seguinte estrutura de arquivos:
├───src
│ ├───main
│ │ ├───java
│ │ │ └───com
│ │ │ └───dev
│ │ │ └───api.pass.in
│ │ │ ├───controller
│ │ │ ├───dto
│ │ │ ├───model
│ │ │ ├───infra
│ │ │ ├───repository
│ │ │ └───service
│ │ └───resources
│ │ ├───static
│ │ └───templates
└── .gitignore
└── api-pass-in.postman_collection.json
└── pom.xml
- O pacote
resources
contém o arquivoapplication.properties
que configura o ambiente da aplicação, e a configuração do banco de dados noapplication-test.properties
. - O pacote
controller
contém as classes que definem os endpoints da API. - O pacote
service
contém as classes responsáveis por acesso ao BD e realizar a lógica de negócio. - O pacote
infra
contém a classeExceptionEntityHandler
responsavel por lidar com as exceptions lançadas pelo controller ou service. - O pacote
model
contém as classes que representam um evento ou participante e seu mapeamento no BD. - O pacote
repository
contém as interfaces que definem operações de acesso a dados para as entidades. - Na source do projeto temos o arquivo
.gitignore
que especifica os arquivos e pastas que devem ser ignorados pelo controle de versão do Git - O arquivo
api-pass-in.postman_collection
para consultar e testar os endpoints na API. - O arquivo
pom.xml
para download das dependencias necessarias para o projeto usando maven.
No projeto foi utilizado o HSQLDB para desenvolvimento local;
Foi adicionado a dependência springdoc
para facilitar a documentação e visualização dos endpoints (acessar rodando localmente);
Alem das dependencias para desenvolvimento com Spring Framework - Web, Bean, JPA;
Links para uso e documentação:
https://hsqldb.org/web/hsqlDocsFrame.html
https://spring.io/projects/spring-data-jpa
https://docs.spring.io/spring-boot/docs/current/reference/html/web.html
http://localhost:8080/swagger-ui/index.html