JSON Schema Validation

Why validate your JSON response?

In modern software development architecture, APIs are often used as an interface for two systems to talk to each other. They can be used for frontend systems to communicate with backend logic or simply for two backend systems to talk to each other.

Given that an API is a means of communication, a contract exists between the API builder and the consumer on how the API will provide information. For the consumers to consume information seamlessly, the API response must always follow the API contract. Therefore, it is crucial to constantly monitor whether API responses meet the contract and whether a code change deployed to production would break the contract before deploying the change.

How to validate a JSON Response in RapidAPI Testing

RapidAPI Testing allows you to quickly validate your API responses against the schema it must abide by. To do this, you will need the response from an API call (you can make the HTTP request in the test itself) and the JSON Schema (more on JSON Schema) we will validate against.

First, let’s add the HTTP request whose response you will validate. The example below is simply a GET request to https://mystoreapi.com/catalog/products. We will store the response in a variable called getProductsResponse.

806

Next, add a JSON Validate step to your test.

774

In the JSON Validate step, select the test variable that holds the JSON data you want to validate against (box 1). In this example, you want to validate the JSON in getProductsResponse.data.products. The JSON schema you will validate against goes in the JSON schema editor (box 2). The schema editor helps you by letting you know whether the schema is valid. (More on JSON Schema).

809

Now execute the test. The execution report will let you know whether the JSON data provided passes the validation. If it does not, the details will explain why. In the example below, the category field must have at least one character, but it’s an empty string.

792

You can adjust the minLength value to 0 or delete the field to fix this.

791

String format validation

In some instances, you may also want to validate the format of a string value in a JSON response. For example, in the response payload below, we may want to check that the date field is always in the date-time format.

782

We can accomplish this via JSON Schema validation as well. You will simply need to add format in addition to type in your JSON Schema definition for the field. Here, we define format as date-time.

1095

If the value is not in the date-time format, the JSON validation will fail, and it will give you the explanation like below.

579

The supported string formats are listed below.

  • date: full-date.
  • time: time with an optional time zone.
  • date-time: date-time from the same source (time-zone is mandatory).
  • uri: full URI.
  • email: email address.
  • hostname: host name.
  • ipv4: IP address v4.
  • ipv6: IP address v6.