The String Compression API is a Spring Boot-based REST service that provides endpoints to compress and decompress strings using a simple Run-Length Encoding (RLE) technique.
- Compress strings by replacing consecutive repeating characters with character-count encoding.
- Decompress encoded strings back to their original form.
- API documentation using OpenAPI (Swagger UI).
- Unit and integration testing with JUnit and Mockito.
- Java 21
- Maven
- Clone the repository:
git clone https://github.com/helenzik24/String-Compression-Project.git cd String-Compression-Project - Build the project:
mvn clean install
- Run the application:
mvn spring-boot:run
Request:
GET /api/compression/compress?input=aaabb
Response:
"a3b2"Request:
GET /api/compression/decompress?input=a3b2
Response:
"aaabb"Swagger UI is available at:
http://localhost:8080/swagger-ui.html
String-Compression-Project/
│── src/main/java/com/compression
│ ├── CompressionApplication.java # Main Spring Boot application
│ ├── controller/CompressionController.java # REST Controller
│ ├── service/CompressionService.java # Business logic for compression
│── src/test/java/com/compression
│ ├── CompressionApplicationTest.java # Test for application startup
│ ├── CompressionServiceTest.java # Unit tests for service
│ ├── controller/CompressionControllerTest.java # Controller unit tests
│── pom.xml # Project dependencies
│── README.md # Documentation
│── .gitignore # Git ignore rules
│── target/ # Compiled output files
This project uses the following dependencies:
- Spring Boot Starter Web - Provides RESTful API functionality.
- Springdoc OpenAPI - Enables Swagger UI documentation.
- JUnit 5 - For unit testing.
- Mockito - For mocking dependencies in tests.
Refer to the pom.xml for detailed versions.
Run unit tests using:
mvn testTest cases include:
- Compressing "aaabb" should return "a3b2".
- Decompressing "a3b2" should return "aaabb".
- Empty input should return an empty string.
- Application context loads successfully.
To create a runnable JAR file:
mvn package
java -jar target/string-compression-api.jarThis project is licensed under the MIT License.