Bedingte portion von web-Seiten, basierend auf der "Akzeptiere" - header mit express?
Ich verstehe, dass Sie dienen können statische Inhalte über express mit:
app.use(express.static(__dirname + "../../../public_html"));
Allerdings werde ich versuchen, express-änderung der Präsentation der Inhalte, die er liefert, basierend auf der "Akzeptiere" - header, die die Antwort verschickt. Normalerweise werden die Inhalte, die ich haben angefordert wird, in eine JSON-format über eine REST-API, also die url ist: http://blah.com/this/that/item
und das funktioniert gut.
Jedoch möchte ich auch für die Benutzer werden in der Lage, den Zugriff, die gleiche Seite in einem browser die senden würde, über so etwas wie: Accept:text/html
und wegen dem header, siehe eine Seite mit richtigen Formatierung (CSS/JS/HTML/etc.) zu präsentieren die gleichen Informationen.
Recht jetzt ich versuche zu dienen, den Inhalt durch:
if (req.accepts("text/html")) {
res.sendfile("/", {
root: "../../../public_html"
});
res.status(200);
return;
}
Wo public_html
hält index.html
und die relative Verzeichnisse mit den CSS und JS. Ich werde nicht schicken Sie die Datei, sobald dieser fertig ist, aber ich dachte, es wäre ein guter Anfang und dann fügen Sie die JSON-Inhalt, nachdem ich herausgefunden, wie man die Verarbeitung statischer Inhalte basierend auf den Accept-header.
Gibt es einen besseren Weg, dies zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist auf dem richtigen Weg. Hier ist eine schöne Beispiel vom Express über die Verwendung von req.akzeptieren:
Aktualisiert:
Können Sie verwenden, res.senden das senden von Dateien ohne Rendern:
res.render
braucht eine render-engine, und Lesen Sie dann überjade
und es muss eine spezifische, separate markup.Können Sie einfach
res.format
um das gleiche zu tun. Das Beispiel von der express-docs:Lesen Sie mehr über es hier: http://expressjs.com/en/api.html#res.format