API REST desenvolvida com Java e Spring Boot para cadastro, atualização, exclusão e consulta de Pontos de Interesse (POIs), incluindo busca por proximidade a partir de uma coordenada de referência.
- Cadastro de POIs com nome e coordenadas (X, Y)
- Listagem de POIs cadastrados
- Consulta de POIs por proximidade
- Remoção de POIs
- Atualização de POIs
- Documentação da API com Swagger/OpenAPI
- Monitoramento com Spring Boot Actuator
Cada Ponto de Interesse possui os seguintes atributos:
nome: nome do POIcoordenadaX: coordenada X, representada por número inteiro não negativocoordenadaY: coordenada Y, representada por número inteiro não negativo
A consulta requer uma coordenada de referência e uma distância máxima (dmax). São retornados os POIs cuja distância até o ponto de referência seja menor ou igual à distância informada.
O cálculo da distância entre os pontos utiliza a fórmula euclidiana.
- Java 21
- Spring Boot
- Spring Web
- Spring Data JPA
- H2 Database
- Swagger / OpenAPI
- Spring Boot Actuator
- JUnit 5 + Mockito
- Docker
- Lombok
- Java 21+
- Maven
- Docker (opcional)
Clone o repositório:
git clone https://github.com/bispobr/Spring-java-PontosDeInteresse.git
cd Spring-java-PontosDeInteresseExecute a aplicação:
mvn spring-boot:runA API estará disponível em:
http://localhost:8080
A documentação da API está disponível em:
http://localhost:8080/swagger-ui/index.html
O console do H2 está habilitado em:
http://localhost:8080/h2-console
Endpoint de saúde:
http://localhost:8080/actuator/health
Endpoint de métricas:
http://localhost:8080/actuator/metrics
Para gerar o artefato da aplicação:
mvn clean packagePara gerar a imagem Docker:
docker build -t gps .Para executar o container:
docker run -p 8080:8080 gpsPOST /pontosInteresse/cadastro
Content-Type: application/jsonExemplo:
{
"nome": "Restaurante",
"x": 10,
"y": 20
}PUT /pontosInteresse/{id}
Content-Type: application/jsonExemplo:
{
"nome": "Restaurante Atualizado",
"x": 15,
"y": 25
}DELETE /pontosInteresse/{id}GET /pontosInteresse/listagemGET /pontosInteresse/proximos?x={x}&y={y}&dmax={distancia}| Parâmetro | Tipo | Descrição |
|---|---|---|
x |
Long |
Coordenada X do ponto de referência |
y |
Long |
Coordenada Y do ponto de referência |
dmax |
Long |
Distância máxima considerada na busca |
Execute os testes com:
mvn testProjeto de estudo desenvolvido para praticar desenvolvimento de APIs REST com Spring Boot, persistência com JPA/H2, tratamento de exceções e consultas por proximidade.