> For the complete documentation index, see [llms.txt](https://sw-fw-less.gitbook.io/project/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sw-fw-less.gitbook.io/project/mvc/router.md).

# Router

### Config Example

```
//Router
'router' => [
    'single' => [
        ['GET', '/ping', [\App\services\DemoService::class, 'ping']],
        ['GET', '/redis', [\App\services\DemoService::class, 'redis', [\App\middlewares\Cors::class]]],
        ['GET', '/mysql', [\App\services\DemoService::class, 'mysql']],
        ['GET', '/http', [\App\services\DemoService::class, 'http']],
        ['GET', '/es', [\App\services\DemoService::class, 'es']],
        ['GET', '/file', [\App\services\DemoService::class, 'file']],
        ['GET', '/qiniu', [\App\services\DemoService::class, 'qiniu']],
    ],
    'group' => [
        '/admin' => [
            ['GET', '/ping', [\App\services\DemoService::class, 'ping']],
        ],
    ],
],
```

### Format

\[{Request Method}, {Path}, \[{Handler}, {Handle Method}, \[{Middleware1}, {Middleware2}...]]]

\[{Middleware1}, {Middleware2}...] is optional.

### Match Rules

```
// Matches /user/42, but not /user/xyz
['GET', '/user/{id:\d+}', [\App\services\UserService::class, 'get']]

// Matches /user/foobar, but not /user/foo/bar
['GET', '/user/{name}', [\App\services\UserService::class, 'get']]

// Matches /user/foo/bar as well
['GET', '/user/{name:.+}', [\App\services\UserService::class, 'get']]
```

### Router Middleware

The router supports multiple middlewares. The priority of router middleware is lower than the one of global middleware.

```
['GET', '/redis', [\App\services\DemoService::class, 'redis', [\App\middlewares\Cors::class]]]
```
