POST-данные в JSON REST API, используя запрос-обещание узла

Я столкнулся с проблемой, чтобы получить $_POST данные в PHP файл. По моему запросу отправляется пост переменной.

var rp = require('request-promise');

var options = {
method: 'POST',
uri: 'http://localhost/orangehrm_live/capacity-dashboard/getAllDetailsCapacity.php',
headers: {
'Content-Type': 'application/json; charset=utf-8',
'Content-Length': dataString.length
},
body: {
some: 'payload'
},
json: true // Automatically parses the JSON string in the response
};

rp(options)
.then(function (repos) {
console.log('User has %d repos', repos.length);
if (repos) {
res.send(repos);
} else {
res.sendStatus(404);
}
})
.catch(function (err) {
res.status(400).send(err);
});

Мой PHP-файл содержит следующий код.

<?php
class getAllDetailsCapacity{
public function getChartRawData(){
//$data = array('message' => 'HeLLO');$json = json_encode($_POST);
print_r($json);
}

}

function node_dispatch() {
$obj=new getAllDetailsCapacity();
if(isset($_POST)) {
$obj->getChartRawData();
}
else {
echo "You are in Admin Mode. Switch back to normal mode to serve your node app.";
}
}

node_dispatch();
?>

Он показывает оператор else, поскольку он не получает значение post в теле запроса обещания функции узла.

1

Решение

$ _POST получает тело сообщения, когда оно содержит пары ключ-значение.
Вам нужно POST для php со значениями, которые вы хотите, чтобы URL-кодировался в теле.

HTTP-запрос может выглядеть так:

POST /path/to/file.php HTTP/1.1
...
Content-Type: application/x-www-form-urlencoded
Content-Length: 32

foo=bar&bar+baz=foo
1

Другие решения

Просто добавьте заголовки и добавьте параметр формы вместо тела. Ваши данные публикуются в файл PHP.

headers: {
'content-type': 'application/x-www-form-urlencoded'
},
form: {
some: dataString // Will be urlencoded
},
0

content-type Заголовок сообщает библиотеке, как преобразовать ваш объект javascript в то, что ожидает сервер. Он также сообщает серверу формат данных, поступающих от клиента.

Когда вы отправляете заголовок типа контента application/json библиотека преобразует ваш запрос в JSON. Это превратит тело в следующее: {"some":"payload"},

Когда вы отправляете заголовок типа контента application/x-www-form-urlencodedтело превращается в это: some=payload,

0
По вопросам рекламы [email protected]