如何使用Express从表单发布到URL并从其中获取JSON?

时间:2018-09-12 18:53:08

标签: node.js express

我正在尝试使用表单发出发布请求,并希望答案是一个JSON,其中包含用户在表单中输入的数据。

这是我的index.pug文件:

doctype html
html(lang='en')
  head
    title HPI
  body
    h1 Formulario HPI
    #container
      form(action="/formulario" method="post")
       label(for='nodoHpi') Nodo Hpi
       input#nodoHpi(name='nodoHpi', type='text')
       br
       br
       label(for='nombreIndice') Nombre Indice
       input#nombreIndice(name='nombreIndice', type='text')
       br
       br
       label(for='valorIndice') Valor Indice
       input#valorIndice(name='valorIndice', type='text')
       br
       br
       button(type="submit") SEND

我真的不知道该怎么做...

我需要的是,当用户在提供的3个输入中输入信息时,数据将发布到另一个URL中的JSON

“ 172。 .20。:12 * /搜索” **

然后我需要将JSON渲染并显示在HTML中。

这是JSON示例:

{
    "token": "1",
    "query": [{
        "index": "ALTC.MC_ROBERTS",
        "terms": [{
            "name": "INDEXTEXT01T",
            "value": "3044071*",
            "operator": "like"
        }],
        "results": {
            "count": 5000,
            "sort": [{
                "name": "ISSUE_DATE",
                "order": "descending"
            }],
            "fields": []
        }
    }]
}

JSON中有3个值需要可变,而这是我希望用户在index.pug文件中输入的3个输入。

这些是:

ALTC.MC_ROBERTS

INDEXTEXT01T

3044071

最后这是我的app.js文件:

const express = require('express');
const request = require('request');
const bodyParser = require('body-parser');
const app = express();
const hostname = '172.19.20.10:12530/search';
const port = '3000';

app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.set('view engine', 'pug');

var headersOpt = {  
    "content-type": "application/json",
};

request.post(
        {
        method:'post',
        url:'http://172.19.20.10:12530/search', 
        form: {nombreIndice:'hello',valorIndice:25, nodoHpi: 'nodo'}, 
        headers: headersOpt,
        json: true,
    }, function (error, response, body) {  
        //Print the Response
        console.log(body);  
}); 

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

app.post('/formulario', (req, res) => {
    res.render('formulario', {prueba: req.body.nodoHpi});
});

app.listen(port, () => {
    console.log("The server is listening in localhost: 3000");
});  

示例:

如果用户在index.pug表单中输入2,John和Xmas,则需要该表单对该URL进行发布请求“ 172..20。:12 * / search” **,然后返回JSON在另一个.pug文件中。

任何想法对我来说都是新手,这对Express来说是一个很大的帮助。

最诚挚的问候!

0 个答案:

没有答案