在本地API上执行GET请求时创建Angular 2 observable失败

时间:2018-02-13 18:06:08

标签: angular observable

使用HttpClient向本地运行的API发送GET请求;我试图通过硬编码暂时进行概念验证,虽然我不会用API代码弄乱它,但它在Postman中正确地返回了这个JSON:

{
"id": 123456789,
"firstName": "Bill"
}

因此,我目前使用的组件方法会进行一些日志记录,然后将组件的字段发送到我的服务;它已锚定在我的登录表单上的提交按钮:

submitLoginForm(){
  console.log("Username: " + this.username + ", Password: " + 
    this.password);
  this.loginService.getUser(this.username, this.password);
  console.log("End");
}

然后我调用service方法,该方法根据GET请求的结果创建一个可观察的 - 或尝试 - :

getUser(): Observable<User> {
  if (this.user) {
    return Observable.from([this.user]);
  } else {
    console.log('Starting observable');
    let observable = Observable.create(observer => {
      this.http.get('localhost:8080/login?username=RainyDayMatt&password=W@nder3r27').subscribe((resp) => {
        console.log('GET success');
        console.log(resp.json);
        this.user = resp.json();
        observer.next(this.user);
        observer.complete();
      },
        (err) => {
          console.log('GET failure');
          console.log(err);
          observer.next(false);
          observer.complete();
        });
    });
    console.log('Ending observable');
    return observable;
  }
}

但我只得到附加的记录;在可观察的创建块中,这显然是一种无形的失败。我不能为我的生活弄清楚它是什么。

Logging

2 个答案:

答案 0 :(得分:0)

@angular/common/http中的新HttpClient自动解析JSON响应(旧的没有)。你应该可以console.log(resp);。我认为这就是错误所在。

答案 1 :(得分:0)

因此,由于CORS问题,我无法访问错误的全部内容;我在API上添加了跨源允许,以便更充分地诊断错误。我收到了完整的错误,告诉我除了HTTP,HTTPS和其他一些协议之外,我正在尝试的操作不受支持。

果然,加入&#34; http://&#34;到GET端点修正了它。