RESTful API endpoints in Drupal can allow you to expose the content of Drupal 7 website to other external resources. These endpoints can be used for fetching data with an AJAX call or simply a web service.
For making complex RESTful web services in Drupal 7, Services module is the best option to go for but if you looking for a simple endpoint in Drupal 7, which outputs JSON response, then going with a custom solution will be the best bet.
Create API endpoint with JSON response in Drupal 7
To create a simple API endpoint in Drupal to serve a JSON put you need to create a custom callback
/**
* Implements hook_menu().
*/
function mymodule_menu() {
$items['api/mymodule'] = array(
'access callback' => true,
'page callback' => 'mymodule_json',
'delivery callback' => 'drupal_json_output',
);
return $items;
}
A noticeable point in this callback is the "delivery callback" argument which runs the output through drupal_json_output function.
/**
* Callback function to return the data.
*/
function mymodule_json() {
$data = ['cat', 'dog', 'mouse', 'elephant'];
return $data;
}
Now if you navigate to the callback url 'api/mymodule' to see the output then you will see the following result
[
"cat",
"dog",
"mouse",
"elephant",
]
Now you can see that this output is exposed as a JSON and can be consumed by other platforms or an AJAX callback to consume data.
The same approach can be used to expose a node or a user as a JSON output.