API呼叫后传回错误,但适用于邮递员

时间:2019-05-08 04:57:01

标签: angular express

我有一个工作的角度项目,该项目使用webapi2连接到真实数据。目前,我正在研究一个express.js项目,该项目可为演示目的模拟数据,因此,我将使用这个总是显示随机数据的express项目,而不是使用真正的webapi2。角度项目调用post api,该api需要一个json对象。但是调用总是返回错误。但是当使用邮递员打电话时,它可以正常工作。

代码:

角度分量

onSubmit(valid: boolean = false): void {
...
this.service.save(request).subscribe(
  result => {
    console.log(result,"RHAILHYDRA");
    ...
  },
  error => {
    console.log(error,"EHAILHYDRA");
    ...
  })
}

角度服务.ts

public save(param: any): Observable < any > {
    let uri = "some url";
    let payLoad = {
        "someId": param.id,
        "someComment": param.comment
    };
    let headers = new HttpHeaders({
        'If-None-Match': param.tag
    });
    return this.http.post <any> (uri, payLoad, {
        headers: headers
    });
}

uri始终为http://localhost:44309/demo/5b42/trade?valid=false

因为它是模拟的,所以我没有考虑查询。因此api调用可以使用/不使用查询。

express.js代码

var bodyParser = require('body-parser');
exports.register = function (app) {
  app.use(bodyParser.json());
  app.use(bodyParser.urlencoded({ extended: true }));
  app.post('/demo/:id/trade', function (req, res) {
    res.status(200).json({
      "validationMessages": [],
      "overridable": true
    });
  });
};

当我单击提交按钮时,它总是出现错误“ EHAILHYDRA”。

enter image description here

但是当我使用邮递员时,我得到了预期的结果。

enter image description here

任何线索都将非常有帮助。

更新#1:

当我单击提交时,在inspect:network中没有此服务的呼叫。

2 个答案:

答案 0 :(得分:1)

当标题值为null或未定义时,可能会出现此问题。因此请删除标题为'If-None-Match': param.tag的标题,然后重试。


public save(param: any): Observable < any > {
    let uri = "some url";
    let payLoad = {
        "someId": param.id,
        "someComment": param.comment
    };
   let httpOptions = {
      headers: new HttpHeaders({ 'Content-Type': 'application/json' })
    };
    return this.http.post <any> (uri, payLoad, httpOptions);
}

答案 1 :(得分:0)

尝试在check上添加一些validationMessages,无论它是否有价值。

请勿直接使用validationMessages

在某些情况下,validationMessages是不确定的,并且您使用该变量来调用一些预定义的数组函数。