表达http正文成为密钥中的关键:值对

时间:2016-02-23 20:02:39

标签: javascript node.js express body-parser

我的Angular 2 http.post请求有问题。

let body = JSON.stringify({user:'username', passw:'mypass'});
let headers = new Headers();

headers.append('Content-Type', 'application/x-www-form-urlencoded');

this.http.post(`http://localhost:8090/api2/drawing/12345`, body, {headers: headers}) //TODO: remove localhost
  .subscribe((res: Response)=>{
    this.data = res.json();
    console.log(this.data);
  })

在我的express-app中,使用bodyparser,请求体看起来像这样:

{ '{"user":"username","passw":"mypass"}': '' }

当我希望它看起来更像这样:

{ user:"username", passw:"mypass" }

我已经像这样配置了bodyParser:

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

我哪里出错?

谢谢!

1 个答案:

答案 0 :(得分:0)

您发送的JSON编码正文与Content-Type application/x-www-form-urlencoded不匹配。如果您想保留JSON正文,请更改此:

headers.append('Content-Type', 'application/x-www-form-urlencoded');

到此:

headers.append('Content-Type', 'application/json');