Как получить данные JSON из URL в Node.js с помощью Express - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь получить объект Json из URL с помощью Express:

это мой код:

app.get('/device/:id', (req, res, next) => {
     console.log('device: ' + req.params.id + ' Request received');
     let parsedContent = JSON.parse(req.query);
     //res.status(201).send('success');
 });

это мой URL:

http://localhost:4001/device/1?{"type":"fridge","pcb"=2.4}

Я получаю сообщение об ошибке в строке анализа.

Вот ошибка по запросу:

SyntaxError: Unexpected token o in JSON at position 1
  at JSON.parse (<anonymous>)

Я также пробовал это:

app.get('/device/:id', (req, res, next) => {
    let query = url.parse(req.url).query;
    if( query ) {
        let parsedContent = JSON.parse(decodeURIComponent(query));
    }
});

С этим URL:

http://localhost:4001/device/1??type=fridge&pcb=2.4

Все та же проблема.

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Если вы хотите отправить данные json в запросе, лучше использовать запрос POST. Тогда сервер должен принять почтовые данные.

var bodyParser = require('body-parser')
app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
    extended: true
}));

...

app.post('/device/:id', (req, res, next) => {
   console.log('device: ' + req.params.id + ' Request received');
   let parsedContent = JSON.parse(req.query);
   let payload = req.body.payload; // your json data
   //res.status(201).send('success');
});

если вы настаиваете на использовании запроса GET, вам необходимо urlencode параметров запроса перед отправкой его на сервер.

http://localhost:4001/device/1?payload=%7B%22type%22%3A%22fridge%22%2C%22pcb%22%3D2.4%7D

В коде вашего сервера вы можете получить к нему доступ let payload = JSON.parse(req.query.payload)

0 голосов
/ 02 июля 2018

Ваш URL должен быть:

http://localhost:4001/device/1?type=fridge&pcb=2.4

Вы не можете написать запрос, как в своем URL. Он должен следовать формату.

? изображает начало запроса. Затем вы помещаете пару ключ-значение как ключ = значение, и если у вас их много, используйте один &

Итак ?key1=val1&key2=val2&key3=val3 ....

Ваш запрос будет:

{"type":"fridge","pcb"=2.4}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...