API无法从HttpClient获取参数

时间:2018-04-30 17:03:30

标签: c# angular rxjs

我不确定为什么我无法将数据从正文传递到我的API?

以下是随附的代码。在调试中,API补丁方法确实被命中,但所有属性都为空/空。

我可以使用Fiddler验证API的工作原理。所以我必须错过使用Angular HttpClient的东西。

API:

[HttpPatch]
public async Task<IActionResult> Update([FromBody]MyParameters parameters)
{
// Do Stuff
}

MyParameters

public class MyParameters
    {
        public Guid Id { get; set; }

        [Required]
        public string Name { get; set; }

        [Required]
        public string Value { get; set; }

    }

打字稿

headers = new HttpHeaders().set("Content-Type", "application/json");

  updateItem(myItem: MyItem) {
    let body = JSON.stringify(myItem);
    console.log(body);

    return this.http      
      .patch(this.ApiUri,
        {
          "Id": myItem.Id,
          "Name": myItem.Name,
          "Value": myItem.Value
        }, { headers: this.headers })
      .catch(this.handleError);
  };

2 个答案:

答案 0 :(得分:0)

对于遇到同样问题的人。我能够解决这个问题:

    let body = JSON.stringify(myItem);

    const options = {
        headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
      };

    return this.http      
      .patch(this.ApiUri, body, options)  
      .catch(this.handleError);

答案 1 :(得分:-1)

let headers: Headers = new Headers({ 'Content-Type': 'application/json' });
let options: RequestOptions = new RequestOptions({ headers:headers });


return this.http      
      .patch(this.ApiUri,
        {
          "Id": myItem.Id,
          "Name": myItem.Name,
          "Value": myItem.Value
        }, options)
      .catch(this.handleError);