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 consumer on how the API will provide information. For the consumers to be able to seamlessly consume information, it is important that the API response always follows the API contract. Therefore, it is important to constantly monitor whether API responses meet the contract, and whether a code change that would be deployed to production would break the contract prior to deploying the change.
Using RapidAPI Testing, you can easily validate your API responses against the schema that it needs to abide by. In order to do this, you will need the response from an API call (you can simply 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. In the example below, it is simply a GET request to
https://mystoreapi.com/catalog/products. We will store the response in a variable called
As a second step, we will add the Json validate action. Select it from the Add Step modal.
In the action that gets added to your test, enter the two pieces of information mentioned earlier. The variable that holds the JSON data we want to validate goes in the Expression field (see box 1). In this example, we want to validate the JSON in
getProductsResponse.data.products. The JSON schema we will validate against goes in the JSON schema editor (see box 2). The schema editor help you by letting you know whether the schema itself is valid or not. (More on JSON Schema).
That’s it! Now, you can go ahead and 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 needs to have at least one character but it’s an empty string.
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 edited field is always in the
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
If the value is not in the
date-time format, the JSON validation will fail, and it will give you the explanation like below.
The supported string formats are listed below.
- date: full-date.
- time: time with 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.
Updated 18 days ago