虽然Postman成功,但Angular6 HttpClient Post方法不起作用?

时间:2018-10-04 12:13:46

标签: angular rest express angular6 angular-httpclient

下面我的后方法代码:

  postMetadata(titleParam, rankParam) {

    let headers = new HttpHeaders();
    headers = headers.append(
      "Authorization",
      "Bearer " + this.adalService.userInfo.token
    );

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

    const params = new HttpParams()
    .append("title", titleParam)
    .append("rank", rankParam)
    .append("createdBy", "Test");

    console.log(params, headers);
    return this.http.post(this.ROOT_URL + "bms/metadata", {
      "title": titleParam,
      "rank": rankParam,
      "createdBy": "Test"
    }, { headers })

}

我也尝试过将{params}放进去,然后在那使用HttpParams对象,结果相同。还尝试过将它们一个接一个地放置{params,headers),在这种情况下,我会得到“未授权”,这是我确定的,因为它无法正确解析整个事物,并且令牌混合了。

使用邮递员,我已经从控制台复制粘贴了令牌,以便能够发出请求,并且一切正常,事情已添加到数据库中。

在Angular情况下,后端请求的确切错误是:

Error updating the dataabase  { RequestError: Invalid column name 'undefined'.

如果我尝试在控制台上登录req.query.title等,那么我到处都是“未定义”。

后端实质上是express + mssql(tedious.js)+ Passport-azure-ad。

1 个答案:

答案 0 :(得分:0)

我已经坚持了好几个小时,一次又一次地解决了,在发布后几分钟之内就解决了。

我必须设置以下内容:

  "Content-Type",
  "application/json"

有些奇怪的原因,但是我在控制台中遇到了错误吗?将进一步调查。错误:enter image description here

编辑:也已修复,这是HttpClient服务请求的完整最终工作代码:

  postMetadata(titleParam, rankParam) {

    let headers = new HttpHeaders();
    headers = headers.append(
      "Authorization",
      "Bearer " + this.adalService.userInfo.token
    );

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


    let body = { "title": titleParam, "rank": rankParam, "createdBy": "TestingCreation" }
    const data = JSON.stringify(body);

    return this.http.post(this.ROOT_URL + "bms/metadata",   data , { headers, responseType: 'text' })

}