2016-10-26 4 views
2

Wenn ich dies tun:Kann ich eine Route in Express überschreiben?

app.get('/test', (req, res) => { 
res.send('First'); 
}); 

app.get('/test', (req, res) => { 
res.send('Second'); 
}); 

Der erste Anruf ist, was funktioniert, der zweite get Anruf nicht die ersten nicht außer Kraft setzen. Gibt es einen guten Weg, das zu ändern?

Grundsätzlich arbeite ich an einer Swagger-App, wo es mehrere APIs treffen kann. Ich verzweigte von https://github.com/thanhson1085/swagger-combined. Die App weiß, wenn die API A /user erreicht, wird sie alle Anrufe von /user an die entsprechende Stelle weiterleiten. Im Moment listet die App alle API-Aufrufe von so vielen APIs auf, wie Sie laden. Das heißt, wenn API A & API B den gleichen Endpunkt von /user haben, werde ich immer nur Proxy an die erste API, die den Endpunkt in meiner App registriert.

+1

Es wäre gut, einen Kommentar zu hinterlassen, warum Sie mich herabstuften, anonymer downvoter –

Antwort

4

Mit Express können keine Routen überschrieben werden. Aber Sie sollten in der Lage sein, eins zu verwenden und zu entscheiden, wo diese Aufrufe proxy werden.

app.get('/test', (req, res) => { 
    if(req.isFirst()){ 
    res.send('First'); 
    } 
    if(req.isSecond()){ 
    res.send('Second'); 
    } 
}); 

Es wäre wahrscheinlich besser, diese apis in getrennten Endpunkten wie /api1/user/ und api2/user/ zu haben.

Sie können Express Router in einen anderen Express Router übertragen.

let api1Router = express.Router() 
rootRouter.use('/api1', api1Router) 

Hoffe, dass hilft.

+0

Ich bin hier nicht in Kontrolle der Endpunkte. Ich versammle nur die APIs anderer Leute. –

+0

Haben Sie diese APIs separat verfügbar? oder verwenden Sie den Proxy, um die Anfragen weiterzugeben? –

+0

Ich verwende einen Proxy, so dass, wenn der API-Endpunkt '/ user' ist, ich'/user' auf meinem Server über diesen Open-Source-Repo treffe. Ich möchte es jedoch so optimieren, dass die '/ user'-Route zu der einen oder anderen Domain führt. Wenn ich nicht überschreiben kann, was anscheinend der Fall ist, muss ich weitere Informationen registrieren und den Proxy schlauer machen. Ich kann das am Ende tun (die komplexere Version von First vs Second in Ihrer Antwort) –

Verwandte Themen