2016-04-22 12 views
1

Ich schreibe eine Webanwendung mit react für Client-Seite und express Server-Seite.
Ich verwende react-router (link) Routing der Client-Seiten.
Mit der hashHistory arbeiten war es einfach und funktionierte gut, aber jetzt möchte ich browserHistory verwenden.Reagieren Router Browser-Verlauf mit Server-Routing

Wie bereits im Tutorial erwähnt, muss ich meinem Server sagen, dass er die Client-Anfrage erwartet.
Ich kann keine Möglichkeit finden, beide Anforderungen vom Client für Seiten und Anforderungen für die Serververarbeitung zu behandeln. Zum Beispiel habe ich eine Seite im Pfad /product, aber ich habe auch einen Endpunkt für den Server /authenticate Verarbeitung.

Im react-router Tutorial sagt, dass es die folgenden verwenden:

// server.js 
// ... 
// add path.join here 
app.use(express.static(path.join(__dirname, 'public'))) 

// ... 
app.get('*', function (req, res) { 
    // and drop 'public' in the middle of here 
    res.sendFile(path.join(__dirname, 'public', 'index.html')) 
}) 

Aber diese Art und Weise wird jede Anfrage (einschließlich /authenticate) führen es in die index.html zurück zu senden. Wie kann ich diese beiden zusammenführen?

Antwort

3

Sie haben die /authenticate vor den * definieren (was im Grunde ein Catch-All ist und kommen letzte)

app.use(express.static(path.join(__dirname, 'public'))) 

ap.get('/authenticate', function (req, res) { 
    res.sendStatus(200) 
}); 

// ... 
app.get('*', function (req, res) { 
    // and drop 'public' in the middle of here 
    res.sendFile(path.join(__dirname, 'public', 'index.html')) 
}) 
Verwandte Themen