当我尝试通过在表单中​​输入的数据编辑 API URL 并从 API 获取数据时,代码不起作用

Code is not working when i am trying to edit the API URL by data entered in form and fetch data from API

大家好,我是nodejs和expressjs的初学者,我正在尝试根据表单中输入的值获取数据。并根据值 URL 将被编辑并发送请求并获取数据并将其显示到页面。我写了代码,但它不起作用。

Index.ejs

    <form action="/index" method="POST">
        <label for="name">Enter json/xml: </label>
        <input type="text" name="name">
        &nbsp&nbsp&nbsp&nbsp&nbsp<button type="submit">Submit</button>
    </form>

app.js

    var express = require('express');
    var app = express();
    var request = require('request');
    var bodyParser = require('body-parser');

    app.set('view engine', 'ejs');

    var urlencoderparser = bodyParser.urlencoded({ extended : true });

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

    app.post('/', urlencoderparser, function(req, res){
        res.render('form-data', {data : req.body});
        request.post({
        "headers": { "content-type": "application/json" },
        "url": "http://mysafeinfo.com/api/data?list=englishmonarchs&format="+req.body.name,
        }, (error, response, body) => {
            if(error) {
                return console.log(error);
            }
            data = JSON.parse(body);
        });
        console.log(req.body);
    });

请帮我找到解决办法

app.use(express.urlencoded({
  extended: true
}));

app.post('/index', function(req, res){
        res.render('form-data', {data : req.body});
        request.post({
        "headers": { "content-type": "application/json" },
        "url": "http://mysafeinfo.com/api/data?list=englishmonarchs&format="+req.body.name,
        }, (error, response, body) => {
            if(error) {
                return console.log(error);
            }
            data = JSON.parse(body);
        });
        console.log(req.body);
    });

我认为你的 bodyParser 有问题。

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

app.set('view engine', 'ejs');

之后添加这些

你的 post 函数应该是这样的

     app.post('/', function(req, res){
     request('http://mysafeinfo.com/api/data?list=englishmonarchs&format='+req.body.name, function (error, response, body) {
     var data = JSON.parse(body);
     console.log(req.body);
    });
    });

并确保在索引文件的表单中应该有 <input type="text" name="name"> 因为您使用的是 req.body.name