Error Responses

Returning an 404 NOT FOUND

The nnrestapi has a few shortcuts built in to respond with error codes, if the request parameters were invalid or the requested data could not be retrieved.

Have a look at the class Nng\Nnrestapi\Mvc\Response to see all available options.

Here we are checking for a model. If it can't be found, we return a 404 NOT FOUND error:

<?php
namespace My\Extension\Api;

use Nng\Nnrestapi\Annotations as Api;
use Nng\Nnrestapi\Api\AbstractApi;

/**
 * @Api\Endpoint()
 */
class Test extends AbstractApi
{
   /**
    * Call via GET-request with an uid: https://www.mywebsite.com/api/test/1
    *
    * @Api\Access("public")
    * @return array
    */
   public function getIndexAction( $uid = null )
   {
      $entry = $this->entryRepository->findByUid( $uid );
      if (!$entry) {
         return $this->response->notFound('Model with uid [' . $uid . '] was not found.');
      }
      return $entry;
   }
}

If you open the URL https://www.mywebsite.com/api/test/1 in your browser and pass the uid of an entry that does not exist, you will see the following JSON response. It will be sent with a 404 NOT FOUND header:

{"status":404, "error":"Model with uid [1] was not found."}

Overview of error codes

shortcut

code

description

$this->response->success([...], 'OK')

200

OK - sent, if no other option was called

$this->response->noContent('message')

204

Empty response

$this->response->unauthorized('message')

403

Unauthorized (not logged in)

$this->response->forbidden('message')

403

Alias to unauthorized

$this->response->notFound('message')

404

Not found

$this->response->invalid('message')

422

Invalid request parameters

$this->response->error($code, 'message')

any

Custom response