Skip to main content
Version: 3.0.0

Sample REST API with Spring-Boot and XML

Introduction

🌟 Explore creating REST APIs with XML responses using Spring-Boot. Discover the ease of integrating XML serialization through JAXB. Let's dive right in! 🚀

Pre-Requisite 🛠️

  • Install Java 17 and set JAVA_HOME environment variable.
  • Install Maven
  • Install Docker (optional)

Get Started! 🎬

Clone and Build the Application

git clone https://github.com/keploy/samples-java.git
cd spring-boot-xml/naive-spring-boot
mvn clean install

Run the Application

Start the Spring Boot application with:

mvn spring-boot:run

Note: For Windows users, commands remain the same.

API Endpoints 📡

Get User Data (XML)

  • Endpoint: GET /api/user

Make a request using curl:

curl -X GET -H \"Accept: application/xml\" http://localhost:8080/api/user
  • Endpoint: GET /api/users

Make a request using curl:

curl -X GET http://localhost:8080/api/users -H "Accept: application/xml"
  • Endpoint: GET /api/people

Make a request using curl:

curl -X GET http://localhost:8080/api/people -H "Accept: application/xml"

Example XML Response

<User>
<name>John Doe</name>
<age>30</age>
<phone>0101233333</phone>
</User>

Integrating with Keploy 📥

Harness Keploy's test generation capabilities easily:

Install Keploy

 curl --silent -O -L https://keploy.io/install.sh && source install.sh

or

Install the cloud version -

  curl --silent -O -L https://keploy.io/ent/install.sh && source install.sh

Record Test Cases

keploy record -c "java -jar target/XML-0.0.1-SNAPSHOT.jar"

Start recording interactions by running:

keploy record -c "java -jar target/XML-0.0.1-SNAPSHOT.jar"

Then, invoke the API using curl or your favorite API testing tool.

Run Generated Tests

Execute recorded tests:

keploy test -c "java -jar target/XML-0.0.1-SNAPSHOT.jar" --delay 10

Review generated test reports in Keploy/reports.

Handling Failing Tests ⚠️

If you encounter failing tests due to variable or irrelevant data, like timestamps or dynamically generated fields, you can add them to the global noise configuration in your keploy.yml:

Example:

Screenshot 2025-03-11 at 12 07 04 AM
globalNoise:
global:
header.Date: []
body:
# To ignore some values for a field, pass regex patterns to the corresponding array value
UserList: []

After updating keploy.yml with the above configuration, rerun your tests, and the issue should be resolved.

Screenshot 2025-03-11 at 12 07 19 AM

Dependencies 📚

  • Spring Boot
  • Spring Web
  • JAXB (XML serialization)

Wrapping Up 🎉

Fantastic! You've successfully navigated creating and testing XML APIs with Spring Boot and Keploy. Keep exploring, experimenting, and innovating! If you have any queries, we're here to help!

Question? 🤔💭

For any support please join keploy slack community to get help from fellow users, or book a demo if you're exploring enterprise use cases.