Сценарий экспресс-запроса POST Java: вызов функции работает только один раз - PullRequest
0 голосов
/ 24 июня 2019

У меня возникла такая проблема, что при отправке запроса POST в мое экспресс-приложение через Postman в JSON, например:

{"eingangswaehrung": "EUR", "zielwaehrung": "AUD", "betrag":100}

Вызов функции rechner (req.body.eingangswaehrung, req.body.zielwaehrung.req.body.betrag) завершается успешно только один раз, при повторной отправке запроса появляется эта ошибка:

«Ошибка: в вашем xml-файле обнаружены ошибки: мусор после элемента документа».

Может кто-нибудь сказать, почему это так и как это исправить?Я все еще учусь, но я уверен, что у меня будет куча таких проблем в будущем.

Спасибо, ребята!Лиза

var https = require('https');
var xml2js = require('xml2js');
var parser = new xml2js.Parser();
parser.on('error', function (err) { console.log('Parser error', err); });
var jsonparser = require('xml2json');


//Express Server auf Port 8001

'use strict';

var express = require('express');
var app = express();

const port = process.env.PORT || 8001;
app.listen(port, () => console.log(`Server started on port ${port}`))

const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

const cors = require('cors');
app.use(cors());


app.get('/rechner', (req, res) => {
    res.send('get works');
})


app.post('/rechner', (req, res) => {

        const test = async function (a, b) {
            const result = await rechner(req.body.eingangswaehrung, req.body.zielwaehrung, req.body.betrag);
            console.log(result);
        }

        test();
    }

    res.send(req.body);


});


let data = '';
let umrechner = {};

const rechner = async function (eingangswaehrung, zielwaehrung, betrag) {

    return new Promise((resolve, reject) => {

        https.get('https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml?46910adcfa674863cc9c493891c7e689', function (res) {

            if (res.statusCode >= 200 && res.statusCode < 400) {

                res.on('data', function (data_) { data += data_.toString(); });

                res.on('end', function () {

                    let json;
                    json = jsonparser.toJson(data);
                    json = JSON.parse(json);

                    let currencies = json['gesmes:Envelope'].Cube.Cube.Cube

                    for (let i = 0; i < currencies.length; i++) {
                        umrechner[currencies[i].currency] = parseFloat(currencies[i].rate)
                    }

                    if (!betrag || !eingangswaehrung || !zielwaehrung || zielwaehrung === " ") {
                        reject('Es fehlt eine Eingabe');
                    }

                    let eurowert;

                    if (umrechner[eingangswaehrung] !== undefined) {
                        eurowert = betrag / umrechner[eingangswaehrung];
                    }
                    else if (eingangswaehrung === "EUR") {
                        eurowert = betrag * 1.0;
                    }
                    else {
                        reject('Something went wrong');
                    }

                    let zielbetrag;

                    if (umrechner[zielwaehrung] !== undefined) {
                        zielbetrag = eurowert * umrechner[zielwaehrung];
                    }
                    else if (zielwaehrung === "EUR") {
                        zielbetrag = eurowert * 1.0;
                    }
                    else {
                        reject('Something went wrong');
                    }

                    resolve(zielwaehrung + ' ' + zielbetrag.toFixed(2));

                    return zielwaehrung + ' ' + zielbetrag.toFixed(2);

                })

            }

        });
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...