NodeJS — запрос, не выполняется с POST / JSON

#node.js #ajax #request

#node.js #ajax #запрос

Вопрос:

Пытаюсь отправить JSON-объект через мой сайт с помощью NodeJS — Request.

 var options = {
        uri: 'http://localhost/test.php',
        method: 'POST',
        json: {
            "longUrl": "http://www.google.com/"
        }
    };

    request(options, function (error, response, body) {
        if (!error amp;amp; response.statusCode == 200) {
            console.log(body)
        }
    });
  

На моем test.php скрипт, я просто записываю переменные $ _REQUEST через json_encode в файл отладки:

 <?php

file_put_contents('test.debug.txt', "TEST: " . json_encode($_REQUEST) . json_encode($_POST));
  

По-видимому, $ _POST ничего не содержит. На первом этапе отладки я записал параметры в свой URL, чтобы проверить, работает ли PHP-скрипт:

 var options = {
        uri: 'http://localhost/test.php?debug=1',
        method: 'POST',
        json: {
            "longUrl": "http://www.google.com/"
        }
    };

    request(options, function (error, response, body) {
        if (!error amp;amp; response.statusCode == 200) {
            console.log(body)
        }
    });
  

И это дополнительное debug=1 решение сделало так, что я могу видеть {‘debug’: 1} в качестве выходных данных в моем отладочном файле. Итак, мой вопрос прямо сейчас: что случилось с переменными POST?

Вывод из запроса NodeJS:

 0|server  |   request:
0|server  |    Request {
0|server  |      _events:
0|server  |       [Object: null prototype] {
0|server  |         error: [Function: bound ],
0|server  |         complete: [Function: bound ],
0|server  |         pipe: [Function],
0|server  |         data: [Function],
0|server  |         end: [Function] },
0|server  |      _eventsCount: 5,
0|server  |      _maxListeners: undefined,
0|server  |      method: 'POST',
0|server  |      body:
0|server  |       '{"longUrl":""http://www.google.com/"}',
  

Ответ №1:

Если вы используете request пакет npm, правильный способ опубликовать json — (doc):

 options = {
  uri: 'http://localhost/test.php',
  method: 'POST',
  body: JSON.stringify({
    "longUrl": "http://www.google.com/"
  }),
  json: true
}
  

Обновить:
Попробуйте это отправить как application/x-www-form-urlencoded

 options = {
  uri: 'http://localhost/test.php',
  method: 'POST',
  form: {
    "longUrl": "http://www.google.com/"
  }
}
  

Комментарии:

1. request(options, function (error, response, body) { Откуда request берется в этой строке? пакет запроса npm?

2. В основном это: var request = require('request');

3. Возможно, ваш сервер не принимает json ? Попробуйте обновить ответ

4. Это потому, что я недавно попробовал тот же запрос через REST Client — который отлично работает с объектами JSON в виде строки

5. ваш журнал отладки завершен request ?