express无法接收到angular4中http.post过来的参数

express无法接收到angular4中http.post过来的参数,试了好多方法都不管用,req中始终拿不到参数。代码如下:

var express = require('express');
var request = require('request');
var bodyParser = require('body-parser');
var multer = require('multer');
var upload = multer({ dest: 'uploads/' })
var app = express();

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

app.get('/', (request, response) => response.send('这里是首页'));

app.post('/api/login', (req, resq) => {
    console.log(req)
    var userName = "";
    var password= "";
    request('http://localhost:8080/login?code='+userName+"&password=1", {form:{'code': userName, 'password':password}}, function (error, response, body) {
        console.log(body)
        resq.send(body);
        resq.end();
    });

});

app.get("*", (request, response) => response.end("404!"));

const server = app.listen(3000, 'localhost', () => {
    var host = server.address().address;
    var port = server.address().port;

    console.log('Example app listening at http://%s:%s', host, port);
});

angular的代码如下:

login(info: any) {

    var headers = new HttpHeaders();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    
    let params = new HttpParams();
    params.set('userName', info.userName)
    params.set('password', info.password)

    this.httpClient.post('http://localhost:3000/api/login',params).subscribe(
      (val) => {
        console.log("POST call successful value returned in body",
          val);
      },
      response => {
        console.log("POST call in error", response);
      },
      () => {
        console.log("The POST observable is now completed.");
      });
  }
阅读 2.9k
1 个回答

你的http的方法使用错了,那个方法是

post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response>;

你可以这么写,reques是一个Object:

  public login(requestUrl, request) {
        const body: string = JSON.stringify(request);
        const header: any = new Headers({'Content-Type': 'application/json'});
        const options: any = new RequestOptions({headers: header});
        this.http.post(url, body, options).subscribe(
        success=>{
            console.log(success);
        },
        fail=>{
            console.log(fail);
        );
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进