2017-09-05 41 views

Odpowiedz

0

Najlepszym byłoby użyć stałej w ścieżkach -

server.route({ 
    method: 'GET', 
    path: constants.route.prefix + '/pets') 
}); 

i mają stałe zdefiniowane w statycznym constants.js złożyć

+0

Wygląda na to, że to rozwiązanie jest najłatwiejsze i ma najsilniejsze narzut. Z tego względu zaakceptuję to, ale inne odpowiedzi również dostarczą możliwych rozwiązań. – Bernhard

0

nie widzę takiej opcji w Hapi docs. Mimo to mogę ci zaproponować małe obejście. Poczynić pewne funkcje:

function createRoutePath(routePath) { 
    return `/api/1${routePath}`; 
} 

a następnie używać go w ten sposób:

server.route({ 
    method: 'GET', 
    path: createRoutePath('/pets') 
}); 

UPDATE: Jako inny obejście, zostawić wszystko jak jest, a ustawienia serwera proxy WWW. Na przykład nginx.

+0

Jeśli jest to jedyny sposób, byłoby łatwiej po prostu użyj stałej w ścieżce 'path: prefix + '/ pets''. – Bernhard

+0

No cóż, używanie nginx nie jest takie złe. Jest szeroko stosowany w produkcji, więc nie ma problemu z dodaniem jeszcze jednej reguły. – Lazyexpert

1

Wygląda na to, że nie można tego zrobić globalnie dla całej aplikacji. Ale istnieje możliwość dodania prefiksów dla wszystkich tras zdefiniowanych w wtyczce:

server.register(require('a-plugin'), { 
    routes: { 
     prefix: '/api/1' 
    } 
}); 

Mam nadzieję, że to pomoże.

Na wszelki wypadek, jeśli spróbujesz dodać ścieżkę bazową poprzez zdarzenia dla nowych tras, to nie zadziała.

+0

Ale to oznacza, że ​​muszę owinąć moje trasy wewnątrz wtyczki? – Bernhard

+0

To prawda, ale niewiele by się to zmieniło. W rzeczywistości jest to sposób na modularyzację aplikacji hapi, które zachęca do hapi. – Alexander