Foxx роутер просто не работает
В настоящее время я пытаюсь перенести свой код с ArangoDB v2.8 на v3.0.1, и я застрял с маршрутами. У меня есть простой маршрут, как:
const router = require('@arangodb/foxx/router')()
router.get('/hello', function (req, res) {
res.json({ hi: 'world' })
})
и мой базовый URL-адрес:
и конечно мой роутер зарегистрирован в manifest.json
как "main": "index.js",
но когда я пытаюсь получить к нему доступ через /_db/ilearn/api/hello
Я получаю 404 "unknown path '/api/hello'"
,
Я пытался изменить URL всеми возможными способами, ничего не помогает. Что я здесь не так делаю?
Спасибо
1 ответ
В отличие от контроллеров, маршрутизаторы не устанавливаются автоматически. Это позволяет передавать их как экспорт и вложить их произвольно. "Основной" файл также не регистрирует маршрутизаторы (как файлы "контроллеров" для контроллеров), а просто указывает точку входа вашего сервиса.
Чтобы смонтировать роутер, вам нужно использовать module.context.use
функция. Вы можете подключить маршрутизатор непосредственно к точке монтирования службы, пропустив путь и просто пройдя маршрутизатор: module.context.use(router)
,
Если вы этого не видели, я бы также порекомендовал ознакомиться с Руководством по миграции, которое охватывает другие "ошибки", с которыми вы можете столкнуться при переходе с 2.x на 3.0: https://docs.arangodb.com/3.0/Manual/Foxx/Migrating2x/index.html
Этот вопрос, в частности, описан в главе о переносе контроллеров: https://docs.arangodb.com/3.0/Manual/Foxx/Migrating2x/Controllers/index.html