gpt4 book ai didi

Angular 2 - 当一个 Http 请求依赖于另一个 Http 请求的结果时该怎么办

转载 作者:太空狗 更新时间:2023-10-29 18:14:14 25 4
gpt4 key购买 nike

我无法弄清楚如何使用 Http 请求的结果来发出另一个 Http 请求。

我有一个从后端 API 请求和接收 JSON Web token 的服务,如下所示:

@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 类使其变得透明。在其中,您可以检查 token 有效性,如果它已过期,则调用 requestToken 方法。

有关详细信息,请参阅此问题:

关于Angular 2 - 当一个 Http 请求依赖于另一个 Http 请求的结果时该怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37846368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com