Angularjs 如何在Angular2中进行HTTP POST调用并打印响应
我是Angular2的新手,正在构建一个示例项目来学习它。我现在正在研究如何在Angular2中进行HTTP调用,并发现以下代码片段示例:Angularjs 如何在Angular2中进行HTTP POST调用并打印响应,angularjs,angular,Angularjs,Angular,我是Angular2的新手,正在构建一个示例项目来学习它。我现在正在研究如何在Angular2中进行HTTP调用,并发现以下代码片段示例: var headers = new Headers(); headers.append('Content-Type', 'application/json'); this.http.post('http://www.syntaxsuccess.com/poc-post/', JSON.stringify({fi
var headers = new Headers();
headers.append('Content-Type', 'application/json');
this.http.post('http://www.syntaxsuccess.com/poc-post/',
JSON.stringify({firstName:'Joe',lastName:'Smith'}),
{headers:headers})
.map((res: Response) => res.json())
.subscribe((res:Person) => this.postResponse = res);
我不确定订阅是做什么的,但我的主要目标是打印回复。从这段代码中我可以看到响应,但我不确定如何“隔离并访问它”(我希望这是有意义的)。我的问题是如何将响应打印到控制台
我的问题是如何将响应打印到控制台
您只需打印res
:
.subscribe((res:Person) => { this.postResponse = res; console.log(res); });
我不确定订阅是做什么的(…) 其结果是一个错误 在您的代码中,您选择POST的结果(一个可观察的
)并调用它。在您的例子中,您这样做是为了将响应解析为JSON并将其转换为对象:
.map((res: Response) => res.json())
现在,.map()
的结果也是一个可观察的。这时您可以调用subscribe
是该类的一种方法,它允许您典型地“注册”或“订阅”三个函数,它们将处理/读取此可观察对象发出的结果(或“事件”)——它们被称为(on)next
,(on)error
和(on)complete
因此,使用.subscribe()
的代码通常是:
.subscribe(
(response) => {
/* this function is executed every time there's a new output */
console.log("VALUE RECEIVED: "+response);
},
(err) => {
/* this function is executed when there's an ERROR */
console.log("ERROR: "+err);
},
() => {
/* this function is executed when the observable ends (completes) its stream */
console.log("COMPLETED");
}
);
因此,为了全面理解Angular2的Http,我建议您阅读上的一些参考资料。当你从中恢复过来,事情会简单得多,我保证(没有双关语的意思:)。谢谢你的回答!有一个问题,因为我只想在响应完成后打印它,在最后一个函数(已完成)中,我如何访问其中的响应?典型地,http调用只发送一个响应,这意味着第一个函数(接收值为“
”的函数)将只调用一次,第三个函数(已完成值为“”的函数)将只调用一次
)将立即被调用。感谢您提供的信息!拜托,如果我不想用订阅怎么办?订阅有什么办法吗?@OniyaDaniel你为什么要这样?