Criando uma API Rest com Spring Boot. Código base se encontra neste repositório.
Projeto consite em fazer uma API para ter controle de estacionamento de um condomínio. Foram e/ou estão sendo feitas as seguintes melhorias no projeto (para fins de estudo).
- Usar CustomValidator - Verificar se o parâmetro passado (POST) já existe no banco
- Receber argumentos no método findAll para listar por argumento
- Fazer relacionamento entre as classes - OneToOne entre Car de ParkingSpot
- Usar meios de conversões para alterar dados com o PUT - Converter
- Inserir testes de unidade com JUnit 5 - ParkingSpotControllerTest
- Inserir Logger com slf4j
- Usar MapSruct e BeansUtils para converter entidades (testar com ambos) - BeanUtils OK
- Consumir uma API externa - Spring WebClient
- Usar container Docker para o banco de dados PostgreSQL
- Gerar a documentação com OpenAPI.
Para executar a aplicação é necessário fazer o clone deste repositório com o comando abaixo.
git clone https://github.com/renaner123/Parking-Control-Api.git
- Ferramentas de desenvolvimento
- Java JDK 17
- Maven
- pgAdmin 4
- Postman ou Insomnia
- Serviços
- Servidor PostgreSQL
A configuração da conexão com o banco de dados é feita através do arquivo properties e deve ser conforme abaixo.
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=banco123
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.jdbc.lab.nan_contextual_creation=true
spring.jpa.show-sql = false
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQL9Dialect
Caso não tenha um servidor Postgres é possível subir um container usando Docker com o seguinte comando:
sudo docker run --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=your-password -d postgres
Caso queira gerenciar o banco de dados com pgAdmin, é possível usar um container para isso, por exemplo:
docker run --rm -p 5050:5050 thajeztah/pgadmin4
Após executar e acessar o endereço gerado pelo container pgadmin4 (http://0.0.0.0:5050)
é necessário adicionar o servidor em Add New Server
.
Passos:
- Em General é necessário configurar um Name.
- Em Connection:
- Host name/addres -> é necessário colocar o endereço IP do host (não pode ser localhost)
- password -> inserir o password usado na criação do container
- Port e username devem ser alterados caso não tenha usado o padrão
Para compilar o projeto e gerar o artefato jar
é necessário executar o comando abaixo
mvn clean install
Com o projeto compilado para executar a aplicação deve-se usar o comando a seguir.
java -jar target/parking-control-0.0.1-SNAPSHOT.jar
A aplicação vai estar disposnível na porta 8080 e poderá ser acessado no seguinte endereço: http://localhost:8080
Método | Endpoint | Serviço |
---|---|---|
GET | localhost:8080/parking-spot/ | Lista todas as vagas de estacionamento |
GET | localhost:8080/parking-spot/{id} | Lista as informações de uma vaga pelo id |
GET | localhost:8080/parking-spot/block/{block} | Lista todas as vagas de acordo com o bloco |
POST | localhost:8080/parking-spot | Cadastra uma nova vaga. Recebe json no body |
DELETE | localhost:8080/parking-spot/{id} | Deleta uma vaga pelo id |
PUT | localhost:8080/parking-spot/id{} | Altera informações no cadastro. Recebe json no body |
Com a aplicação em executação, também é possível acessar sua documentação OpenAPI no endereço localhost:8080/swagger-ui.html
ou no arquvo parkingControl.yml.
Abaixo as bibliotecas que auxiliaram no desenvolvimento do projeto.
Biblioteca | Função | Licença |
---|---|---|
Spring Boot | Framework ORM | Apache 2.0 |
junit | Testes unitários | EPL 2.0 |
slf4j | Mensagens de log | MIT |
PostgreSQL | Conexão com PostgreSQL | PostgreSQL |