Integrate Apitte (opens new window) into nette/routing (opens new window) with a presenter.

Usage of that package is not recommended as it requires unnecessary conversion of nette request into psr-7 request. It also adds headers from nette response configuration which are usually mean for UI, not an API.

Presenter is currently incompatible with middlewares (opens new window).

# Content

# Setup

First of all, setup core (opens new window) package.

Install apitte/presenter

composer require apitte/presenter
1

Configure presenter mapping

application:
    mapping:
        Apitte: Apitte\Presenter\*Presenter
1
2
3

Prepend ApiRoute to your router. Therefore you can reach your API at <project>/api.

namespace App\Router;

use Apitte\Presenter\ApiRoute;
use Nette\Application\IRouter;
use Nette\StaticClass;

class RouterFactory
{
    use StaticClass;

    public static function createRouter(): IRouter
    {
        $router = new RouteList;
        $router[] = new ApiRoute('api');
        $router[] = new Route('<presenter>/<action>', 'Homepage:default');
        return $router;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

In index.php drop Apitte\Core\Application\IApplication and keep Nette\Application\Application only.