Маршруты
Маршрут связывает адрес и HTTP-метод с кодом, который формирует ответ. Все маршруты приложения описываются в файле start/routes.ts — он уже есть в проекте.
Первый маршрут
Откройте start/routes.ts и добавьте в конец маршрут:
// start/routes.ts
import router from '@adonisjs/core/services/router'
router.get('/hello', async () => {
return 'Привет!'
})Объект router импортируется из пакета ядра. Метод get принимает адрес и функцию-обработчик. Откройте http://localhost:3333/hello — на странице появится строка «Привет!».
Что можно вернуть
То, что вернул обработчик, становится ответом. Строка отправляется как текст или HTML, а объект или массив — как JSON:
// start/routes.ts
router.get('/about', async () => {
return '<h1>О блоге</h1>'
})
router.get('/api/status', async () => {
return { status: 'ok', posts: 3 }
})По адресу /about браузер покажет заголовок, а по /api/status — JSON {"status":"ok","posts":3}. Заголовок Content-Type фреймворк ставит сам.
HTTP-методы
У каждого метода запроса свой метод роутера. Один адрес может по-разному отвечать на разные методы:
// start/routes.ts
router.get('/posts', async () => 'Список статей')
router.post('/posts', async () => 'Статья создана')
router.put('/posts/1', async () => 'Статья изменена')
router.delete('/posts/1', async () => 'Статья удалена')| Метод | Для чего |
|---|---|
get | Показать страницу или данные |
post | Создать запись, отправить форму |
put, patch | Изменить запись |
delete | Удалить запись |
any | Любой метод |
Шаблон без обработчика
Если странице не нужен код, а только шаблон, используйте router.on:
// start/routes.ts
router.on('/').render('pages/home')Этот маршрут из стартового набора показывает шаблон resources/views/pages/home.edge на главной странице.
Список маршрутов
node ace list:routesКоманда печатает таблицу всех маршрутов: метод, адрес, имя и обработчик. Удобно, когда маршрутов становится много.
Частая ошибка
Открыть в браузере можно только GET-маршрут: адресная строка всегда отправляет GET. Если зайти на адрес, у которого есть только router.post, вы увидите ошибку 404 «Cannot GET:/posts». Проверять POST-маршруты нужно через форму или программу вроде curl:
curl -X POST http://localhost:3333/posts