Экспресс-узел JS POST.Как добавить значения в мой req.body без использования параметров URL - PullRequest
0 голосов
/ 27 сентября 2018

Я строю остальные API, используя Express NodeJS с MySQL.У меня нет никаких проблем с использованием GET и использованием req.params.value и передачей значений с использованием параметров URL.

Теперь я пытаюсь использовать POST для вставки некоторых данных в мою базу данных.Используя POSTMAN, у меня нет проблем с этим, потому что, очевидно, вы можете установить переменные BODY, которые будут использоваться.Но меня осенило в моих приложениях, я не смогу использовать POSTMAN для этого.Мой вопрос (который может быть глупым), как я могу передать эти переменные тела в мой API?Я все еще передаю их через URL как параметры?Если так, я бы использовал req.body.value или req.params.value?Вот мой POST код:

// Add new record 
router.post('/editablerecords/add', function (req, res) {

    let qb_TxnID = req.body.txnid
    let type = req.body.type;
    let margin = req.body.margin;

    if (!qb_TxnID || !type || !margin ) {
        return res.status(400).send({ error:true, message: 'Please provide qb_TxnID, type, or margin' });
    }

    // res.send(qb_TxnID + ' ' + type + ' ' + margin);

    connection.query("INSERT INTO pxeQuoteToClose SET ? ", { 'qb_TxnID': qb_TxnID, 'type': type, 'margin': margin }, function (error, results, fields) {
        if(error){
            res.send(JSON.stringify({"status": 500, "error": error, "response": null})); 
            //If there is error, we send the error in the error section with 500 status
        } else {
            res.send(JSON.stringify({ error: false, data: results, message: 'New record has been created successfully.' }));
            //If there is no error, all is good and response is 200OK.
        }

    });
});

1 Ответ

0 голосов
/ 27 сентября 2018

Ну, это зависит от того, как вы сделаете запрос, как вызов XMLHttpRequest или через форму, но в этом случае он определенно не будет использовать params.Вот три варианта отправки данных в ваш API в зависимости от ваших требований, в вашем случае я бы посоветовал последний.

1 - вы можете использовать форму и указать действие на конечной точке.В этом случае вам придется добавить промежуточное программное обеспечение bodyParser для данных x-www-form-urlencoded в ваше экспресс-приложение.Если вы используете библиотеку body-parser, это так же просто, как app.use(bodyParser.urlencoded([options])).Данные будут доступны в req.body.

2 - Вы можете отправлять все данные в своем URL, но в строке запроса, а не в параметрах.Например: https://yourapi.com/editablerecords/add?qb_TxnID=data_id&type=data_type&margin=data_margin.Все данные будут доступны в объекте req.query.Нет необходимости добавлять какой-либо синтаксический анализатор.

3 - И последнее, но не менее важное: я бы посоветовал отправлять ваши данные в виде тела json с использованием XMLHttpRequest.Чтобы помочь вам, вы можете использовать такую ​​библиотеку, как axios или fecth, но принцип остается прежним: вы устанавливаете свое тело с помощью объекта данных и извлекаете его в req.body на вашем API.Просматривая ваш код, я предполагаю, что вы используете парсер тела, но если это не так, вы должны добавить промежуточное ПО, используя app.use(bodyParser.json()).

Я надеюсь, что у меня есть ответ на ваш вопрос, и это поможеттебя нет.

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