node.js - POST Route 到 END Route
问题描述
我正在构建一个 Node.JS 网站,需要将我当前的 GET 路由更改为 POST 路由。如何成功进行转换。我当前的错误是'Cannot GET /' 然后我需要让 POST 路由命中 GET 路由。
const express = require('express');
const path = require('path');
const hbs = require('express-handlebars');
// Moment.js
var moment = require('moment');
// Init App
const app = express();
// Json File
const json = require("./data.json");
// Javascript Files
const welcomeTime = require('./public/javascript/welcomeTime');
// Load View Engine
app.engine('hbs', hbs({extname: 'hbs', defaultLayout: 'layout',
layoutsDir: __dirname + '/views/layouts/'}));
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
app.use(express.static(__dirname+'/public'));
// GET Route
// app.get('/', function(req, res){
// res.render('index', {
// title: 'NodePark',
// hotel: 'NodePark',
// firstName: json.payload.data.Source_FirstName,
// lastname: json.payload.data.Source_LastName,
// date: moment().format('ll'),
// time: moment().format('LT'),
// currentHour: welcomeTime.dayTime()
// });
// });
// POST Route
app.post('/', function(req, res){
res.render('index', {
title: 'NodePark',
hotel: 'NodePark',
firstName: json.payload.data.Source_FirstName,
lastname: json.payload.data.Source_LastName,
date: moment().format('ll'),
time: moment().format('LT'),
currentHour: welcomeTime.dayTime()
});
});
// Start Server
app.listen(5000, function(){
console.log('Port 5000 open for business.');
});
我已经包含了我的工作 GET Route 和 POST Route 的尝试。我不明白为什么它不起作用。
layout.hbs 如下
<!doctype HTML>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="UTF-8">
<title>{{ title }}</title>
<link href="https://fonts.googleapis.com/css?family=Fanwood+Text:400i" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lora" rel="stylesheet">
<link rel="stylesheet" href="/stylesheets/style.css">
<style>li span { position: relative; left: -8px; }</style>
</head>
<body>
{{{ body }}}
</body>
</html>
index.hbs 在下面
<div id="body-container">
<div id="header">
<div id="logo-content">
<div id="logo"></div>
</div>
<div id="welcome">
<p>Good {{ currentHour }} {{ firstName }} {{ lastname }}. We hope your stay is comfortable & relaxing.</p>
</div>
</div>
{{!-- <div id="time-side">
<div id="time-content">
<p> {{ date }} <br> {{ time }} </p>
</div>
</div> --}}
</div>
{{!-- end of header --}}
<div id="background">
<img src="images/villaView.jpg" alt="villaView">
</div>
<div id="footer">
<p> <br> © 2018 NodePark </p>
</div>
我的目标是创建一个从 POST 路由到 GET 路由的端点。
解决方案
在您的帖子处理程序中,调用res.redirect("<new-url>")
以将用户重定向到<new-url>
.
// POST Route
app.post('/', function(req, res){
// store the incoming data somewhere, e.g. in a cookie-based session
res.redirect('/');
});
// GET Route
app.get('/', function(req, res){
// retrieve the posted data from somewhere, e.g. from a cookie-based session
res.render('index', { ... });
});
推荐阅读
- javascript - JS中的公式为游戏中的不同分支创建体验目标
- animation - 是否有一种“简单”的方式在 Python 中为散点图设置动画?
- android - 在 Android Emulator 上从 Flutter 请求 ASP.Net Core 3.1 的请求主机名无效
- swift - 为什么 URL 会话不会按应有的顺序执行?
- php - Laravel 更新表单
- kotlin - 当我们应该在 android 中创建新布局时
- python - 大写 PyPI 包的 Anaconda 问题
- java - 声明一次与重复声明
- math - 如何创建自定义矩阵?
- python - 如何在不反复重新加载的情况下测试神经网络模型