2017-09-05 2 views
5

zu definieren Ich möchte jeden hapi Routenpfad mit einem Präfix (/api/1) beginnen, ohne es zu jeder Route hinzuzufügen. Ist das möglich?Ist es möglich, einen globalen Basispfad in hapi

Die folgende Strecke sollte mit Pfad /api/1/pets und nicht /pets

const Hapi = require('hapi'); 
const server = new Hapi.Server(); 
server.route({ 
    method: 'GET', 
    path: '/pets' 
}) 

Antwort

0

Die beste Wette eine Konstante in den Pfaden zu verwenden wäre -

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

und hat die Konstante in einem statischen constants.js

+0

Es scheint, dass diese Lösung die einfachste Lösung ist und einen Pachtaufwand hat. Deshalb werde ich es akzeptieren, aber die anderen Antworten bieten auch mögliche Lösungen. – Bernhard

0

Ich sehe nicht, eine solche Option in Hapi docs zur Verfügung. Trotzdem kann ich Ihnen einen kleinen Workaround vorschlagen. Machen Sie einige Funktion:

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

Und dann verwenden Sie es auf diese Weise:

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

UPDATE: Als ein weiteres Problem zu umgehen, lassen Sie alle wie es ist, und das Setup-Proxy-Webserver. Zum Beispiel nginx.

+0

Datei definiert Ist dies der einzige Weg ist, würde es einfacher sein, Verwenden Sie einfach eine Konstante in Pfad 'Pfad: Präfix + '/ pets'. – Bernhard

+0

Nun, mit Nginx ist nicht so schlimm. Es ist weit verbreitet in der Produktion, also kein Problem, eine weitere Regel hinzuzufügen. – Lazyexpert

1

Scheint, Sie können es nicht global für die gesamte Anwendung tun. Aber es gibt eine Möglichkeit, Präfixe für alle Routen hinzuzufügen, die in einem Plugin definiert sind:

Hoffe, das hilft.

Nur für den Fall, wenn Sie versuchen, Basispfad über Ereignisse für neue Routen hinzuzufügen, wird es nicht funktionieren.

+0

Aber das bedeutet, dass ich meine Routen innerhalb eines Plugins verpacken muss? – Bernhard

+0

Es tut, aber es würde sich nicht viel ändern. Eigentlich ist das eine Möglichkeit, Hapi-Apps zu modularisieren, die hapi ermutigen. – Alexander

Verwandte Themen