He visto la misma pregunta publicada, pero no hay muchas respuestas útiles. Me gustaría mostrar la página de bienvenida una vez que haya hecho el contenido de app.post, pero no pasa nada.
Sé que es válido porque me dará un error si introduzco una ruta no válida, pero simplemente no hará lo que me gustaría.
app.get('/', function (req, res) { res.render('Welcome') }) app.post('/makepost', function (req, res) { //do some things res.render('Welcome'); })En la Vista, uso esto para llamar a app.post.
fetch('/makepost', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: body, }Cuando realiza una llamada Ajax usando fetch() desde su Javascript en el navegador, el resultado de esa llamada ajax simplemente regresa a su Javascript. El navegador no representa ni muestra nada automáticamente.
Por lo tanto, si desea que cambie el contenido que se muestra, debe cambiar window.location para indicarle al navegador que vaya a una nueva página web o debe tomar el resultado de la operación fetch() e insertarlo en el que se muestra actualmente. página de alguna manera.
Un POST solo se mostrará automáticamente en el navegador si proviene de una publicación de formulario enviada por el navegador donde el navegador envía el formulario POST a su servidor, no a su Javascript. En ese caso, tomará el resultado del formulario POST y lo mostrará.
Consulte ¿Cómo redirigir correctamente en NodeJS/ExpressJS? para alguna explicación adicional.
Nota: Puede, desde su Javascript, llamar a form.submit() o form.requestSubmit() donde form es el objeto DOM para su formulario y estos funcionarán de manera similar al usuario final que presiona un botón de envío y el navegador mostrará lo que sea respuesta que el servidor devuelve después de procesar el formulario POST.
Si simplemente desea redirigir al usuario a la página de inicio después de la publicación, puede hacerlo:
app.post('/makepost', function (req, res) { //do some things res.redirect('/'); })si desea obtener más información sobre los motores de renderizado y visualización, consulte la documentación de express: https://expressjs.com/pt-br/guide/using-template-engines.html
y esta publicación en geekforgeeks.com: https://www.geeksforgeeks.org/express-js-res-render-function/
un resumen para usted, debe instalar un motor de vista como ejs, crear una carpeta llamada vistas y poner sus páginas en esta carpeta y renderizarlas con el mismo nombre que eligió. Le recomiendo que use express-generator para automatizar esta tarea: https://expressjs.com/pt-br/starter/generator.html
otro consejo es representar sus páginas solo en métodos de obtención, ya que el objetivo del método de publicación es enviar datos al servidor y no obtener datos o páginas. ¡Espero haberte ayudado!