【问题标题】:Unable to POST using Angular 7 : Header Does not work无法使用 Angular 7 发布:标题不起作用
【发布时间】:2019-05-21 15:32:12
【问题描述】:

我目前正在构建一个 Angular 7 应用程序,并尝试实现以下 HTTP API 调用场景:

请求应用程序令牌: https://(URL)/token

请求类型:POST

标题: 接受:application/json

请求正文:空

我在Angular应用中有一个Service类,代码如下:

import { HttpClient } from '@angular/common/http';
import { HttpHeaders } from '@angular/common/http';

requestToken函数实现如下:

requestToken() {
 let headers = new HttpHeaders();
 headers = headers.set('Accept', 'application/json');

 return this.http.post(this.configUrl + '/token', headers);
}

然后在 App 中的组件之一中调用服务:-

getToken() {
 this.service.requestToken().subscribe( res => {
 console.log(res);
 }, error => {
   console.log(error);
 });
}

当我运行应用程序时,我在控制台中收到 404 Not Found 错误。我使用 Postman 进行 API 调用,将“Accept”标头设置为“application/json”,然后将 url 指定为 https://(URL)/token,我成功获得了响应。但我无法通过 Angular 使其工作。

我还需要做些什么才能在 Angular 中正确设置标题吗?此外,我无法检查 API 服务器上是否启用了 CORS,因为这是我试图调用的第三方服务。

任何帮助将不胜感激。谢谢

【问题讨论】:

  • 您查看了网络选项卡吗?实际提出的请求是什么?
  • 这应该可以。听起来很傻,但检查变量“this.configUrl”,还要检查它的末尾是否没有“/”,因为“/token”已经有一个。
  • @jonrsharpe 请求类型显示为 POST
  • 标题呢?一个明显的问题是 POST 有一个 body,您似乎没有考虑到它。
  • @GustavoMorais URL 是正确的.. 服务类中还有其他函数在同一 URL 发出 GET 请求,所有这些都有效..

标签: rest api http angular7


【解决方案1】:

解决了这个问题。将 POST 调用更改为以下内容:

requestToken() {

    const httpHeaders = new HttpHeaders({
      'Accept': 'application/json'
    });

    return this.http.post(this.configUrl + '/token', { body: ''}, { headers: httpHeaders });
  }

必须添加一个空的“body”参数

【讨论】:

  • 这不是一个空的body参数,这是一个包含对象{"body":""}的body。第二个参数不像options,它主体。
  • @jonrsharpe 感谢您的意见。刚开始学习前端开发!
猜你喜欢
  • 2019-07-20
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
  • 1970-01-01
  • 2019-04-15
  • 1970-01-01
  • 2019-07-19
相关资源
最近更新 更多