To validate a JSON schema using Rest Assured in a GET
API response, you can use the JsonSchemaValidator
provided by Rest Assured. It helps ensure that the structure of the JSON returned from the API matches an expected schema.
Steps to Use JSON Schema Validation in Rest Assured
1. Add Dependencies
<dependencies> <!-- Rest Assured --> <dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <version>5.4.0</version> <scope>test</scope> </dependency> <!-- JSON Schema Validator --> <dependency> <groupId>io.rest-assured</groupId> <artifactId>json-schema-validator</artifactId> <version>5.4.0</version> <scope>test</scope> </dependency> </dependencies>
users-schema.json
in the src/test/resources
directory.{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "page": { "type": "integer" }, "per_page": { "type": "integer" }, "total": { "type": "integer" }, "total_pages": { "type": "integer" }, "data": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "email": { "type": "string" }, "first_name": { "type": "string" }, "last_name": { "type": "string" }, "avatar": { "type": "string" } }, "required": ["id", "email", "first_name", "last_name", "avatar"] } }, "support": { "type": "object", "properties": { "url": { "type": "string" }, "text": { "type": "string" } }, "required": ["url", "text"] } }, "required": ["page", "per_page", "total", "total_pages", "data", "support"] }
import io.restassured.RestAssured; import io.restassured.http.ContentType; import static io.restassured.module.jsv.JsonSchemaValidator.matchesJsonSchemaInClasspath; import static io.restassured.RestAssured.*; public class JsonSchemaValidationTest { public static void main(String[] args) { RestAssured.baseURI = "https://reqres.in"; given() .contentType(ContentType.JSON) .when() .get("/api/users?page=2") .then() .assertThat() .statusCode(200) .body(matchesJsonSchemaInClasspath("users-schema.json")); System.out.println("Schema validated successfully."); } }