Angular 2 http没有得到
我新来Angular 2仍然学习我正在尝试打一个电话的url,但即使在浏览器的networking中似乎没有通过我无法find被调用的URL。
该程序是去那个方法控制台日志logging上面和下面,得到调用,但没有任何获取调用
我的服务方法
import { Headers, Http, Response } from '@angular/http'; import { Injectable } from '@angular/core'; import { Persons } from './mock-people'; import { Person } from './person'; import {Observable} from 'rxjs/Rx'; getAllPersons():void{ console.log("Here"); this.http.get(`http://swapi.co/api/people/1`).map((response:Response) => { console.log(response.json()); response.json(); }); console.log("Comes here 2"); }
在app.module.ts中导入Httpmodule
我的控制台屏幕截图
安慰
Http使用rxjs,是一个冷/懒惰的观察,这意味着你应该订阅它使其工作。
this.http.get(`http://swapi.co/api/people/1`).map((response:Response) => { console.log(response.json()); response.json(); }).subscribe();
或者,如果你想从其他地方订阅,你应该像这样返回http.get方法:
getAllPersons():Observable<any>{ console.log("Here"); return this.http.get(`http://swapi.co/api/people/1`).map((response:Response) => { console.log(response.json()); response.json(); }); }
接着 :
getAllPersons().subscribe();
方法应该使用Observable返回api调用的响应。
service.cs
import { Http, Jsonp, Response, Headers, RequestOptions } from '@angular/http'; import { Injectable } from '@angular/core'; import { Persons } from './mock-people'; import { Person } from './person'; import { Observable } from 'rxjs/Observable'; import 'rxjs/add/observable/forkJoin'; @Injectable() export class Service { constructor(private jsonp: Jsonp, private _http: Http) { } getAllPersons():Observable<any>{ console.log("Here"); let headers = new Headers({ 'Content-Type': 'application/json' }); let options = new RequestOptions({ headers: headers, method: 'get' }); return this._http.get('http://swapi.co/api/people/' + personId) .map((res:Response) => { return <any>res.json(); }) .catch(this.handleError); console.log("Comes here 2"); } private handleError(error: Response) { console.error(error); return Observable.throw(error.json().error || ' error'); } }
选项和标题是可选的。
注意:不是( <any>
),你可以定义你的数据types或者你在响应中获取数据的任何其他定义types。
谢谢。