使用Angular的HttpClient发布到API

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Angular的HttpClient发布到API相关的知识,希望对你有一定的参考价值。

在Angular 7应用程序上,我正在调用一个服务:

  this.messageService.send(model).pipe(

    catchError(err => 
      console.log('Error:', err);
      return err;
    ),

    map((response: Response) => 
      console.log(response);
    )

  );

服务方法调用API:

public send(model: Model): Observable<Response> 

  const headers: HttpHeaders = new  HttpHeaders();
  headers.set('Content-Type', 'application/x-www-form-urlencoded');

  console.log(model);

  return this.httpClient.post<Response>>(`send`, model,  headers: headers );


当我做model时,我能够在控制台上看到console.log(model);

但我在API上的断点不会触发,我在catchError中没有任何错误。

API操作是ASP.NET Core 2.2。如下:

[HttpPost("send")]
public async Task<IActionResult> Send([FromBody]Model model) 

  return Ok();


注意: 在这个相同的应用程序,我能够使用httpClientget方法没有问题。

不确定我错过了什么。任何的想法?

UPDATE

我将Angular服务代码更改为:

public send(model: Model): Observable<Response>> 

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

  console.log(model);

  return this.httpClient.post<Response>>(`send`, JSON.stringify(model),  headers: headers );


还是行不通。

这是一个Angular问题,因为我刚刚发布了Postman的JSon数据。

它使用Postman工作,没有任何类型的身份验证/授权。

答案

尝试在visual studio上查看输出窗口。也许有一些关于这个问题的信息。验证控制器是否具有AthorizationAttribute。验证Content-Type','application / x-www-form-urlencoded',尝试将其更改为'Content-Type':'application / json'

以上是关于使用Angular的HttpClient发布到API的主要内容,如果未能解决你的问题,请参考以下文章

Angular 4 HttpClient 查询参数

Angular HTTPClient (HTTP) 请求永远挂起

Angular 4 错误:没有 HttpClient 的提供者

Angular4从Http迁移到HttpClient - 使用凭据

Angular:如何将来自 HttpClient 请求的 JSON 结果映射到类实例?

Angular httpClient 将响应映射到具有行为的实体