我有一个Web API控制器,如下所示:
[HttpPost]
public IHttpActionResult Test()
{
return Ok();
}
这是正确的语法,但是当我尝试从Angular 2中的服务调用它时,我收到错误消息:“json解析错误语法错误意外结束输入。”要解决此问题,我必须将值放入ActionResult中,例如
return Ok(1)
我错过了一些配置吗?我的Angular 2服务调用如下所示:
return this.http.post(API/Controller/Test).map(res => res.json());
我想当你收到空响应(没有有效载荷)时,你不需要调用json
方法。在引擎盖下,XHR响应未定义,调用JSON.parse(undefined)
并抛出错误。
你可以跳过map
运算符的调用:
return this.http.post(API/Controller/Test)/*.map(res => res.json())*/;
其他方式:
我所有的http.get,post或put调用(统一):
.map(this.extractData)
在extractData中(更新:感谢raykrow反馈,短代码):
private extractData(res: Response) {
return res.text() ? res.json() : {}; ;
}
严格来说,如果您的API返回没有内容的OK代码,则应返回204(无内容) - Angular也会对此感到满意,而不是尝试解析任何内容。所以你的控制器方法将成为:
[HttpPost]
public IHttpActionResult Test()
{
return NoContent();
}