Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Маршруты

Маршрут связывает адрес и 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

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.