繁体   English   中英

nodejs请求正文未定义

[英]nodejs request body undefined

我有一个客户端 angular 应用程序,它将POST请求发送到节点 js 服务器。

order(market: string, price: string, side: string, size: string): Observable<any> {
        var payload = { market: market, order: { price: price, side: side, size: size } };
        return this.http.post<any>('http://localhost:3000' + "/orders", JSON.stringify(payload))
            .pipe(
                tap((res: any) => {
                   console.log(res);
                }),
                retry(3), // retry a failed request up to 3 times
                catchError(this.handleError) // then handle the error
            );
    }

带有快速生成器的nodejs:

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var cors = require('cors');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
var corsOptions = {
    origin: 'http://localhost:4200',
    optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204 
  }

app.use(cors(corsOptions))

app.use('/', indexRouter);
app.use('/users', usersRouter);

app.post('/orders', (req, res) => {
    console.log(req.body)   
});

// catch 404 and forward to error handler
app.use(function (req, res, next) {
    next(createError(404));
});

// error handler
app.use(function (err, req, res, next) {
    // set locals, only providing error in development
    res.locals.message = err.message;
    res.locals.error = req.app.get('env') === 'development' ? err : {};

    // render the error page
    res.status(err.status || 500);
    res.render('error');
});

module.exports = app;

angular app 可以到达nodejs app中的一个方法

app.post('/orders', (req, res) => {
    console.log(req.body)
});

req.body未定义。 我在这里做错了吗?

您的后端代码对我来说看起来不错。 我相信问题是由前端代码引起的。 具体通过这一行:

this.http.post<any>('http://localhost:3000' + "/orders", JSON.stringify(payload))

不要对您发送到后端的数据进行字符串化。 像这样改变它:

this.http.post<any>('http://localhost:3000' + "/orders", payload)

您需要使用body-parser ,它是 ExpressJS 中间件,可让您解析 POST 请求。 这是一个有据可查的问题,您也可以在此处找到类似的 S/O 问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM