Angular:如何在发布或发出请求后检查http代码?

时间:2017-11-30 15:40:16

标签: angular asp.net-web-api

这是我的服务器端代码

[HttpPut("api/columnInfoData")]
public IActionResult UpdateColumnInfoData([FromBody] KeyValue[] columnInfoList)
{
    try
    {
        _unit.ColumnInfos
                .UpdateColumnInfoData(columnInfoList);
        _unit.SaveChanges();

        return NoContent ();
     }
     catch (Exception ex)
     {
        return BadRequest();
     }
}

这是我的Angular代码:

updateColumnInfos(_url: string, body) {
return this.http.put(this.baseUrl + _url, body)
  //.do(data => console.log('getKeyValues: ' + JSON.stringify(data)))
  .map((event: HttpEvent<any>) =>{
    console.log(event.type)
  })
  .catch(this.handleError);

}

这是订阅部分..

 updateColumnInfos(){
 this._backendService
    .updateColumnInfos("api/columnInfoData", this.tempColumnIdList)
    .subscribe(success => {
      if(success){

      }
    }, err => this.errorMessage = "failed to update column selection")

    //this.reloadTable = false;
  } 

不幸的是,它没有记录任何内容。当我在C#代码中设置断点时,断点正在被击中。当我通过Postman提出请求时,我收到204

如何检查我的角度代码中的代码?实际上,我希望在成功更新列后重新加载表。

感谢您的帮助

修改

而不是return NoConent(),我正在返回return Ok("Test...");,但我的角度代码仍然没有记录任何内容。但是,当我转到浏览器时:F12 > Network tab > Response tab,我看到Test...

编辑2

而不是返回字符串Ok("test...")来创建匿名对象Ok(obj),而不是现在它的日志记录。有什么理由吗?

public IActionResult UpdateColumnInfoData([FromBody] KeyValue[] columnInfoList)
{
    try
    {
        _unit.ColumnInfos
                .UpdateColumnInfoData(columnInfoList);
        _unit.SaveChanges();

        //return Ok("test..."); --> I've changed this to ..
        var resp = new { resp = "test..." };
        return Ok(resp);
     }
     catch (Exception ex)
     {
        return BadRequest();
     }
}

1 个答案:

答案 0 :(得分:1)

根据Angular's documentation,类似下面的内容应该可以解决问题。

i

您可以在自己的开发工具中查找updateColumnInfos(_url: string, body) { return this.http .put(this.baseUrl + _url, body, {observe: 'response'}) .subscribe(resp => console.log(resp)); 属性,但最有可能resp将是您正在寻找的内容。