提问者:小点点

req.body不被解析,只返回未定义的


是的,我已经研究过类似的问题,比如express.js req.body undefined,但是它没有帮助我,是的,我已经尝试将代码更改为中间件。 我的问题是传递的XML是有效的,一切正常(我使用Angular作为前端),但我的后端总是向我传递一个未定义的变量req.body.。。 我有以下代码:

var req = http.request(options, function (res) {
    var chunks = [];
  
    res.on("data", function (chunk) {
      chunks.push(chunk);
    });
  
    res.on("end", function (chunk) {
      var body = Buffer.concat(chunks);
      console.log(body.toString());
    });
  
    res.on("error", function (error) {
      console.error(error);
    });
  });
  
  req.write(postData);
  
  req.end();

共1个答案

匿名用户

在angular中,尝试为从后端接收的内容定义一个接口,这样当您创建可观察对象时,它就知道从后端获取了什么。 正如您所说的,您已经在后端解析了XML中的信息。 这应该管用。 例如:

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { ErrorprocessorService } from './errorprocessor.service';
import { Observable, Subject } from 'rxjs';
import { map } from 'rxjs/operators';

interface JWTResponse {
  success: boolean;
  message: string;
  user: any;
}

@Injectable({
  providedIn: 'root'
})

export class AuthService {

  constructor(private http: HttpClient, private errorProcessor: ErrorprocessorService) { }

  checkJWTtoken() {
    this.http.get<JWTResponse>('http://localhost:3000/auth/checkToken')
      .subscribe(res => {
        console.log('JWT Token Valid: ', res);
        this.sendUsername(res.user.username);
      }, err => {
        console.log('JWT Token Invalid: ', err);
        this.destroyUserCedentials();
      });
  }
}