A production-ready REST API built with Spring Boot, JPA, Security, and OpenAPI documentation.
- RESTful API: Clean, consistent endpoints
- JWT Authentication: Secure authentication with JWT tokens
- Database: PostgreSQL with JPA/Hibernate
- Validation: Input validation with Jakarta Validation
- Error Handling: Global exception handling
- API Documentation: Swagger UI with OpenAPI 3
- CORS Support: Cross-origin resource sharing
- Pagination: Pageable responses
- Java 17
- Spring Boot 3.1.5
- Spring Security
- Spring Data JPA
- PostgreSQL
- JWT (jjwt)
- Lombok
- OpenAPI 3 (Swagger)
POST /api/v1/auth/login- Login with credentialsPOST /api/v1/auth/refresh- Refresh access token
GET /api/v1/users- Get all usersGET /api/v1/users/{id}- Get user by IDPOST /api/v1/users- Create new userPUT /api/v1/users/{id}- Update userDELETE /api/v1/users/{id}- Delete user
GET /api/v1/products- Get all products (paginated)GET /api/v1/products/search?query={query}- Search productsPOST /api/v1/products- Create new productPUT /api/v1/products/{id}- Update productDELETE /api/v1/products/{id}- Delete product
- Java 17+
- Maven
- PostgreSQL
- Create database:
CREATE DATABASE apidb;-
Configure database in
application.yml -
Run the application:
mvn spring-boot:run- Access API documentation:
- Swagger UI: http://localhost:8080/swagger-ui.html
- OpenAPI JSON: http://localhost:8080/v3/api-docs
src/main/java/com/leo/api/
├── controller/ # REST controllers
├── model/ # Entity classes
├── dto/ # Data transfer objects
├── service/ # Business logic
├── repository/ # Data access layer
├── config/ # Configuration classes
└── exception/ # Exception handling
FROM openjdk:17-jdk-slim
COPY target/springboot-api-*.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]MIT