我有一个工作的角度项目,该项目使用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”。
但是当我使用邮递员时,我得到了预期的结果。
任何线索都将非常有帮助。
更新#1:
当我单击提交时,在inspect:network中没有此服务的呼叫。
答案 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
是不确定的,并且您使用该变量来调用一些预定义的数组函数。