Skip to main content
Version: 2.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!

Contact Us

If you have any questions or need help, please feel free to reach out to us at hello@keploy.io or reach out us on Slack or open a discussion on GitHub Discussion