Как создать конечную точку POST для конечной точки GET? - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь создать веб-сайт Node.JS, но мне нужно создать две конечные точки, чтобы мой IOT работал правильно. Цель состоит в том, чтобы создать две конечные точки, конечную точку POST, в которой он получает данные JSON для конечной точки 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',

        // 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 голосов
/ 07 сентября 2018

Честно говоря, не уверен на 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.');
});
...