> For the complete documentation index, see [llms.txt](https://akyos.gitbook.io/book/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://akyos.gitbook.io/book/wordpress/akyos-x-core/wrappers/router-route-controller.md).

# Router / Route / Controller

Les wrapper Route et Router permettent d'enregistrer des routes custom en se basant sur les fonctions de bases de [l'API de Wordpress](https://developer.wordpress.org/rest-api/). Chaque route possède une méthode et est lié à un Controller. Les Controllers se doivent d'être situé dans le dossier `app/Controller` et suivre la nomenclature de nommage suivante : ExempleController

Exemple :

```
├── app
│   └── Controllers
│       └── ExempleController.php 
```

Enfin, afin de définir les routes, vous devrez vous rendre dans fichier `app/routes.php` et définir vos routes de la manière suivante :

{% code title="routes.php" %}

```php
Route::get('/posts', 'PostController@get'); // method GET
Route::post('/posts', 'PostController@post'); // method POST
```

{% endcode %}

Enfin, on va pouvoir définir dans notre [Controller](/book/wordpress/akyos-x-core/wrappers/router-route-controller.md) le code que l'on veut afin de traiter la requête.

Exemple :

{% code title="ExempleController.php" %}

```php
class ExempleController extends Controller
{
    public function get()
    {
        $offset = request()->get('offset');
        if (!isset($offset)) {
            return response('Offset is required');
        }
        
        $posts = QueryBuilder::make('post')
                    ->offset($offset)
                    ->limit(9)
                    ->orderBy('date', DESC)
                    ->get();
            
        $posts = collect($posts)->map(function ($post) {
            return [
                'id' => $post->ID,
                'title' => $post->post_title,
                'content' => $post->post_content,
                'date' => $post->post_date,
                'thumbnail' => get_the_post_thumbnail_url($post->ID, 'full'),
                'link' => get_permalink($post->ID),
            ];
        })->toArray();
        
        return response($posts);
    }
    
    public function post()
    {
	// implement code here
    }
}
```

{% endcode %}

> Note : ici, on utilise le [QueryBuilder](/book/wordpress/akyos-x-core/wrappers/querybuilder.md) afin de récupérer nos posts, qui est un wrapper personnalisé permettant d'abstraire la logique de la [WP\_Query](https://developer.wordpress.org/reference/classes/wp_query/)
