The module comes with an error management system that aims to standardize errors. The module automatically sends the appropriate HTTP status code to the client: 400 for expected errors, 500 for unexpected.
Here is the structure of the JSON response returned in case of error:
{
"error": {
"code": "not-found",
"message": "Document not found.",
"data": null
}
}
You can return a 400 error with the exception \Dbout\WpRestApi\Exceptions\RouteException
. The error message will be returned in the response.
#[Action(Method::GET)]
public function get(int $documentId): \WP_REST_Response
{
// Add your logic
$document = $this->findDocument($documentId);
if (!$document) {
throw new \Dbout\WpRestApi\Exceptions\RouteException('Deprecated function.');
}
return new \WP_REST_Response([
'success' => true,
]);
}
{
"error": {
"code": "route-exception",
"message": "Deprecated function.",
"data": null
}
}
You can return a 404 error with the exception \Dbout\WpRestApi\Exceptions\NotFoundException
:
#[Action(Method::GET)]
public function get(int $documentId): \WP_REST_Response
{
// Add your logic
$document = $this->findDocument($documentId);
if (!$document) {
throw new \Dbout\WpRestApi\Exceptions\NotFoundException('Document')
}
return new \WP_REST_Response([
'success' => true,
]);
}
{
"error": {
"code": "not-found",
"message": "Document not found.",
"data": null
}
}
If you want to return a 500 error, just use \Exception
. By default, 500 error messages are never returned, a generic message is returned instead:
{
"error": {
"code": "fatal-error",
"message": "Something went wrong. Please try again.",
"data": null
}
}
💡 You can enable debug mode to return the exception in the response.
You can return a custom error using the exception \Dbout\WpRestApi\Exceptions\RouteException
:
#[Action(Method::GET)]
public function get(int $documentId): \WP_REST_Response
{
// Add your logic
$document = $this->findDocument($documentId);
if (!$document) {
throw new \Dbout\WpRestApi\Exceptions\RouteException(
message: 'Deprecated function.'
errorCode: 'deprecated-function',
httpStatusCode: 200
);
}
return new \WP_REST_Response([
'success' => true,
]);
}
{
"error": {
"code": "deprecated-function",
"message": "Deprecated function.",
"data": null
}
}