如何通过使用表单传递一些值并使用URL获取任何API,并根据api中的表单数据获取响应

时间:2018-11-19 12:50:25

标签: javascript node.js api express ejs

每个人,我都是nodejs和expressjs的初学者。因此,在练习时,我想到的一个问题是,我有一个要从中获取数据的URL,而我只是这样做了。 以下是代码:

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 });
var data;
app.get('/', function (req, res) {
    request.get('http://mysafeinfo.com/api/data?list=englishmonarchs&format=json', function(err, res, body){
        if(err) {
            return console.log(error);
        }
        data = JSON.parse(body);
    });
   res.render('index', {data: data});
   console.log(data);
});
app.listen(3000);

此代码运行正常。

然后我想通过使用表单传递值来更改URL。

enter image description here

我们可以在表格中输入一个值。该值应为XML或JSON,并根据此值将更改URL,如下所示:

var url = 'http://mysafeinfo.com/api/data?list=englishmonarchs&format='+form_data

现在,我以这种方式尝试了request.post():

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

但这不起作用。 请帮助我知道我在哪里错了,以及这种方法对于在nodejs或expressjs中进行编码是否正确?

大家好,我正在为您添加完整的代码,以获得更多权限

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.listen(3000);

0 个答案:

没有答案