Angular 4 http 补丁不适用于通话,但适用于邮递员

Jam*_*317 2 http typescript angular

我正在尝试打补丁/并发布对服务器的调用,但它永远不会到达服务器。我试过用邮递员做这件事,它在那里工作。所以我很确定它与我的代码有关。

基本上,我的帖子和补丁是一样的,所以我只会展示补丁。

protected patch(url: string, body: any): Observable<any> {
    let options = this.getRequestOptions(body);
    return this.http.patch(this.baseUrl+url,JSON.stringify(body),options);
}
private getRequestOptions(body:any):RequestOptions{
    let cpHeaders = new Headers({ 'Content-Type': 'application/json' });
    let options = new RequestOptions({ headers: cpHeaders });

    return options;
}
Run Code Online (Sandbox Code Playgroud)

请注意,this.baseUrl = "http://localhost/blah/api/和 url 被传递为test;

我很感激这里的任何帮助。提前致谢

更新

   [HttpPut]
    public virtual IHttpActionResult Patch([FromBody]T entity)
    {
        return Ok(_repository.Patch(entity));
    }

    [HttpPatch]
    public virtual IHttpActionResult WebPatch([FromBody]T entity)
    {
        return this.Patch(entity);
    }
Run Code Online (Sandbox Code Playgroud)

我有一个代理配置,如下面的评论所示。

 {
  "/api": {
    "target": "http://localhost/QuickQuoteApi",
    "secure": false,
    "pathRewrite": {
      "^/api": ""
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 8

响应晚,但对未来的开发人员有用。

我遇到了同样的问题,它在 Postman 中有效,但在 Angular 中无效。

由于补丁对象是一个可观察对象,您必须订阅它才能调用补丁调用。

this.patch(url, payload).subscribe(); // Executes path object
Run Code Online (Sandbox Code Playgroud)