Routing - airtype/craft-httpmessages GitHub Wiki

The pattern for route definitions can be seen below.

<?php

return [
    '<pattern>' => [
        '<http verb>' => [
            <middleware>,
            <middleware>
        ],
    ],
];

Things to note:

  • <pattern> keys utilize Craft's native routing patterns.
  • Each http verb must be explicitly defined to be utilized.
  • The array of middleware will be merged with the global middleware defined in the httpmessages.php config file.

In practice, route definitions will look similar to the following.

<?php

use Psr7Middlewares\Middleware;
use Craft\HttpMessages_Middleware;

return [
    '/api/user' => [
        'GET' => [
            Middleware::responseTime(),

            HttpMessages_Middleware::kernel()
                ->setController('Craft\\UserController')
                ->setMethod('index'),
        ],
    ],

    '/api/user/(?P<id>\d+)' => [
        'GET' => [
            Middleware::responseTime(),

            HttpMessages_Middleware::fractal()
                ->setTransformer('Craft\\OrderTransformer'),

            HttpMessages_Middleware::kernel()
                ->setController('Craft\\UserController')
                ->setMethod('show'),
        ],

        'POST' => [
            Middleware::responseTime(),

            HttpMessages_Middleware::csrf(),

            HttpMessages_Middleware::fractal(),

            HttpMessages_Middleware::kernel()
                ->setController('Craft\\UserController')
                ->setMethod('create'),
        ],

        'PUT' => [
            Middleware::responseTime(),

            HttpMessages_Middleware::csrf(),

            HttpMessages_Middleware::fractal(),

            HttpMessages_Middleware::kernel()
                ->setController('Craft\\UserController')
                ->setMethod('update'),
        ],

        'DELETE' => [
            Middleware::responseTime(),

            HttpMessages_Middleware::csrf(),

            HttpMessages_Middleware::fractal(),

            HttpMessages_Middleware::kernel()
                ->setController('Craft\\UserController')
                ->setMethod('delete'),
        ],

    ],

];
⚠️ **GitHub.com Fallback** ⚠️