Сервер NodeJS получает запрос POST - PullRequest
0 голосов
/ 28 июня 2018

Я создаю простой сервер NodeJS, который получит запрос POST и выполнит некоторую бизнес-логику

var server = http.createServer(function(request, response) {
if (request.method == 'POST') {
        var body = '';
        request.on('data', function (data) {
            body += data;
        });
        request.on('end', function () {
            try {
              var post = JSON.parse(body);
              deal_with_post_data(request,post);
              response.writeHead(200, {"Content-Type": "text/plain"});
              response.end();
              return;
            }catch (err){
              response.writeHead(500, {"Content-Type": "text/plain"});
              response.write("Bad Post Data.  Is your data a proper JSON?\n");
              response.end();
              return;
            }
        });
    }
});
server.listen(3000);
console.log("server started")

Теперь, когда я тестирую образец POST-запроса от почтальона с json, я получаю ошибку Bad Post Data. Is your data a proper JSON?, что, по сути, означает, что он попал в 500 internal server error.

Вот пример JSON, который я пробовал

{
    "glossary":"book"
}

И отправка POST-запроса на http://<IP_ADDRESS>:3000

Может кто-нибудь предложить, пожалуйста?

1 Ответ

0 голосов
/ 28 июня 2018

Только что проверил ваш код:

const http = require('http');

var server = http.createServer(function(request, response) {
if (request.method == 'POST') {
        var body = '';
        request.on('data', function (data) {
            body += data;
        });
        request.on('end', function () {
            try {
              var post = JSON.parse(body);
              // deal_with_post_data(request,post);
              console.log(post); // <--- here I just output the parsed JSON
              response.writeHead(200, {"Content-Type": "text/plain"});
              response.end();
              return;
            }catch (err){
              response.writeHead(500, {"Content-Type": "text/plain"});
              response.write("Bad Post Data.  Is your data a proper JSON?\n");
              response.end();
              return;
            }
        });
    }
});
server.listen(3000);
console.log("server started")

В Postman я сделал POST-запрос с данным JSON (как raw), и я получил правильный JSON, зарегистрированный в консоли. Таким образом, предоставленный код в порядке. Возможно, проблема в функции deal_with_post_data (которую вы здесь не показывали)

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