Error handling in Scripted REST API for JSON format issue
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
2 hours ago
Hi All,
Hope you are doing well.
I created one scripted rest API and its not working as expected for the below case where Request body is not in proper JSON format.
If I pass the below proper JSON Format, its working as expected.
{
"number": "1234",
"correlation_id": "55556667777788889",
"location_id": "test"
}
But when I pass the below improper JSON format, its giving status code as 200 and empty response.
Same issue I observed in REST API Explorer as well.
{
"number": "1234",
"correlation_id": 55556667777788889,
"location_id": "test"
}
Please let me know how I can add a validation if request body is a valid JSON or not in this use case. Thank You!
Best Regards,
Ganesh

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
2 hours ago
The tricky thing here is that the second example is actually proper JSON since the correlation_id is composed of just numbers. It is probably just reading it as a number rather than a string. Could you convert it to a string in your code to get by the issue?
If you are missing a parameter that is not sent at all, you can check for that and then return an error message. It would look something like this:
(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var requestBody, responseBody, status, sm;
try {
requestBody = request.body;
var JSONdata = new global.JSON().decode(requestBody.dataString);
if (JSONdata.number == null || JSONdata.correlation_id == null || JSONdata.location_id == null) {
return {
"status": "Error",
"message": "Missing required parameters.",
};
} else {
//do stuff
return {
"status": "Success",
"message": "Action completed successfully",
};
}
} catch (ex) {
res["status"] = "500";
res["message"] = "An error has occurred";
response.setBody(JSON.stringify(res));
status = '500';
}
})(request, response);