РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnuSpSvSM 41 of 90 menu
◀ ▶

Серверный посредник в Nuxt

Обработчик в server/routes или server/api получает запрос уже как готовую цель. Часть работы удобнее вынести в общий слой: один раз проставить заголовок, прочитать URL или подготовить контекст для всех серверных ответов. В Nuxt для этого служит server/middleware.

Давайте изучим порядок выполнения. Сначала отрабатывают файлы из server/middleware, затем подходящий маршрут или API. Посредник тоже объявляют через defineEventHandler, но если нужно, чтобы запрос дошёл до маршрута, из функции не возвращают тело ответа.

Структура с логом и маршрутом:

  • /server/
    • /middleware/
      • log.js
    • /routes/
      • hello.js

Посредник прочитает адрес через getRequestURL, при необходимости возьмёт сегменты из pathname и добавит заголовок ответа x-hit. Главное - не обрывать цепочку лишним return с телом ответа:

export default defineEventHandler((event) => { const url = getRequestURL(event); setResponseHeader(event, 'x-hit', '1'); });

Маршрут по-прежнему отдаёт текст, а заголовок x-hit приходит от посредника. При GET на /hello тело будет Hello, заголовок виден во вкладке сети; тот же посредник сработает и для других адресов:

export default defineEventHandler(() => 'Hello');

Сделайте серверный посредник, который добавляет заголовок ответа x-shop со значением demo.

Проверьте на любом серверном маршруте, что заголовок x-shop виден в ответе вместе с телом маршрута.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить