【问题标题】:Angular6 HttpClient Post method not working although Postman is successful?尽管 Postman 成功,Angular6 HttpClient Post 方法不起作用?
【发布时间】:2018-10-04 20:46:17
【问题描述】:

我的 postmethod 代码如下:

  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。

【问题讨论】:

标签: angular rest express angular6 angular-httpclient


【解决方案1】:

我在这个问题上被困了几个小时,又一次,在发布到堆栈后几分钟内就解决了。

我必须设置以下内容:

  "Content-Type",
  "application/json"

出于某种奇怪的原因,我在控制台中遇到了错误?将进一步调查。错误:

编辑:也已修复,这里是 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' })

}

【讨论】:

  • 既然您已经解决了问题,建议您的代码在 http 方法之外声明标头。
  • @Araldy -- 嗯,这可能是继续这个的方法。我使用了我构建的另一个应用程序的逻辑,但在这种情况下,该服务中的某些请求的标头不同(不同的 authz)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-15
  • 1970-01-01
  • 1970-01-01
  • 2021-02-27
相关资源
最近更新 更多