使用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();
注意:
在这个相同的应用程序,我能够使用httpClient
与get
方法没有问题。
不确定我错过了什么。任何的想法?
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 HTTPClient (HTTP) 请求永远挂起
Angular 4 错误:没有 HttpClient 的提供者
Angular4从Http迁移到HttpClient - 使用凭据