如何为GET端点创建POST端点?

时间:2018-09-07 14:07:52

标签: json node.js rest express endpoint

我正在尝试创建一个Node.JS网站,但是我需要创建两个端点才能使IOT正常工作。目的是创建两个端点,即一个POST端点,在该端点中它检索GET端点的JSON数据,以便在欢迎页面上加载保留的名字和姓氏。我该怎么办?

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',

        // This woould be the json data I need from the payload
        firstName: json.payload.data.Source_FirstName,
        lastname: json.payload.data.Source_LastName,
        // end of data needed

        date: moment().format('ll'),
        time: moment().format('LT'),
        currentHour: welcomeTime.dayTime()
    });
 });

// POST Route
app.post('/hotel', function(req, res){
    res.redirect('/', {
    });
});

// Start Server
app.listen(5000, function(){
    console.log('Port 5000 LIVE.');
});

1 个答案:

答案 0 :(得分:0)

老实说,不是100%知道您要在这里实现什么。但是我要刺一针。

听起来像您想要从获取路线和发布路线中检索的数据。只需将数据放入函数中,然后从两条路径中调用该函数即可。但是我要说的是,如果您有一个“ POST”端点,而该端点只是从“ GET”端点中检索数据,那么我会严重质疑您为什么要以“ POSTING”开头。您没有在创建任何新资源或任何东西。

无论如何,这是我所谈论的例子。

const express = require('express');
const path = require('path');
const hbs = require('express-handlebars');

// Moment.js
const 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`));

const getMyData = () => ({
  title: 'NodePark',
  hotel: 'NodePark',

  // This woould be the json data I need from the payload
  firstName: json.payload.data.Source_FirstName,
  lastname:  json.payload.data.Source_LastName,
  // end of data needed

  date:        moment().format('ll'),
  time:        moment().format('LT'),
  currentHour: welcomeTime.dayTime()
});

// GET Route
app.get('/', (req, res) => {
  res.render('index', getMyData());
});

// POST Route
app.post('/hotel', (req, res) => {
  const theData = getMyData(); // use it here???  I have no idea....
  res.redirect('/', {
  });
});

// Start Server
app.listen(5000, () => {
  console.log('Port 5000 LIVE.');
});