我无法弄清楚如何使用 Http 请求的结果来发出另一个 Http 请求。
我有一个从后端 API 请求并接收 JSON Web 令牌的服务,如下所示:
@Injectable()
export class JwtAuthorizationService {
constructor(private http: Http) {}
public requestToken(): Observable<string> {
// Set dummy credentials.
let body = this.setBody();
let headers = this.setHeaders();
let token = this.http.post(tokenUrl, body, { headers: headers })
.map(this.extractData)
.catch(this.handleError);
// Return the Observable
return token;
}
private extractData(res: Response): string {
let body = res.text();
return body || "";
}
我现在如何使用结果requestToken()
(一个 Observable)进行另一个 API 调用,使用 JWT 进行身份验证,并从中获取结果?或者也许更简单,当一个 Http 调用依赖于另一个 Http 调用的结果时,您会做什么?
你可以使用flatMap
操作员来做到这一点:
this.authorizationService.requestToken().flatMap(token => {
var headers = new Headers();
headers.append('Authorization', `Bearer ${token}`);
return this.http.get('...', { headers }).map(res => res.json());
});
您还可以通过扩展 HTTP 类来使其透明。在其中,您可以检查令牌有效性,如果过期,请调用requestToken
method.
请参阅此问题了解更多详细信息:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)