使用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;
}
}
但我只得到附加的记录;在可观察的创建块中,这显然是一种无形的失败。我不能为我的生活弄清楚它是什么。
答案 0 :(得分:0)
@angular/common/http
中的新HttpClient自动解析JSON响应(旧的没有)。你应该可以console.log(resp);
。我认为这就是错误所在。
答案 1 :(得分:0)
因此,由于CORS问题,我无法访问错误的全部内容;我在API上添加了跨源允许,以便更充分地诊断错误。我收到了完整的错误,告诉我除了HTTP,HTTPS和其他一些协议之外,我正在尝试的操作不受支持。
果然,加入&#34; http://&#34;到GET端点修正了它。