2016-03-11 1 views
1

Учитывая этот маршрут конфигурации:Где неразрешенный путь запроса Хапи?

server.route 
method: 'GET' 
path: "/app/usage/{id}" 
handler: (req, reply) -> 
    ... 

Есть ли способ программно получить неразрешенный путь/приложение/использования/{ID} из объекта запроса в prehandler? Я знаю, как получить разрешенный путь, например./app/usage/1234, но мне нужен неразрешенный путь (в идеале без необходимости его реконструировать с помощью строковых манипуляций).

server.ext 'onPreHandler', (request, reply) -> 
    resolvedPath = request.path 
    unresolvedPath = ? 

ответ

2

Под «неразрешенного путем», я полагаю, вы имеете в виду path параметра, указанного при создании маршрута с использованием server.route(options)?

Запись из таблицы маршрутизации для маршрута, который получает соответствие с запросом помещается в request.route для проверки:

server.route({ 
    method: 'GET', 
    path: '/app/usage/{id}', 
    handler: function (request, reply) { 

     const route = request.route; 
     const routePath = route.path; // '/app/usage/{id}' 

     reply('hello') 
    } 
}); 

Он доступен по всему request lifecycle, так что вы можете получить его в функции onPreHandler расширения тоже:

server.ext('onPreHandler', function (request, reply) { 

    const route = request.route; 
    const routePath = route.path; // Whatever your route path is for the request 

    reply.continue(); 
}); 

ПРИМЕЧАНИЕ Имейте в виду, что вы не можете просматривать request.route.path внутри функции onRequest расширения, потому что это вызывается до того, как маршрут будет согласован. Из relevant section in the API docs:

  • onRequest точка расширения
    • request.route еще не заселена в данный момент.
  • Поиск маршрута с использованием запроса путь
  • ...
Смежные вопросы