node.js, express, как получить данные из body form-data в пост-запросе - PullRequest
0 голосов
/ 25 июня 2019

У меня есть простое приложение node.js. Я хочу получить тело сообщения от пользователя.

app.js

var express = require('express');
var app = express();

app.use(express.json());

app.post('/api/user', function (req, res) {
    console.log(req.body);
    console.log(req.body.username);
});

module.exports = app;

server.js

var app = require('./app.js');

var server = app.listen(3000, function () {

    var port = server.address().port;

    console.log('Web App Hosted at http://localhost:%s',port);

});

Когда я запускаю его с node server.js, это нормально. Когда я проверю это с почтальоном, enter image description here

в консоли возвращает

Web App Hosted at http://localhost:3000
{}
undefined

У меня самый новый экспресс.

И я попробовал другую вещь, такую ​​как добавление анализатора тела, добавление заголовка к типу содержимого, добавление express.urlencoded () и т. Д., Но ни одна из них не работает. Мне нужно получить данные из данных формы , как почтальон на картинке выше. Как я могу получить это?

Ответы [ 4 ]

2 голосов
/ 25 июня 2019

вам нужно установить body-parser для анализа req.body

var bodyParser = require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

body-parser извлекает всю часть тела входящего запроса поток и выставляет его на req.body.

1 голос
/ 25 июня 2019

Вы добавили Content-Type: application/json в заголовки? У меня была такая же проблема, и было решено добавить Content-Type: application/json.

1 голос
/ 25 июня 2019

Express указывает в своих API-документах , что вам нужно использовать одно из предоставленных промежуточных программ, чтобы дать телу значение.Они приняли это решение, потому что есть много разных типов форматов, которые могут принимать тела HTTP-запросов, и они не хотят предполагать, какой из них использует ваше приложение.

0 голосов
/ 26 июня 2019

в нерабочее время, я нашел его.

body-parser его не требуется, потому что в новом экспрессе есть включение.

я нашел, как получить данные формы, для этого требуется multer (дляпарсинг данных (multipart / form data).я нашел его в tutorialspoint.com .

первая установка multer

npm install multer --save

import multer в вашем приложении.например, в моем коде

var express = require('express');
var app = express();
var multer = require('multer');
var upload = multer();

// for parsing application/json
app.use(express.json()); 

// for parsing application/x-www-form-urlencoded
app.use(express.urlencoded({ extended: true })); 

// for parsing multipart/form-data
app.use(upload.array()); 
app.use(express.static('public'));

app.post('/api/user', function (req, res) {
    console.log(req.body);
    console.log(req.body.username);
});

module.exports = app;

, поэтому он может получать данные формы, raw или x-www-form-urlencoded.

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