是的,我已经研究过类似的问题,比如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();
在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();
});
}
}