gpt4 book ai didi

javascript - 无法将 JSON 对象返回给调用程序

转载 作者:行者123 更新时间:2023-12-03 02:29:15 25 4
gpt4 key购买 nike

我正在运行下面的代码,允许用户登录系统。作为此功能的一部分,正在使用 HTTP POST(返回 Observable)。由于这是使用 JWT,因此我必须提取 TOKEN 中的值。

我想以 JSON 格式将 Observable(带有这些 TOKEN 值)返回给调用程序。我尝试使用 map 功能如下:

adminLogin(username, password) {
let url = `${this._apiRoot}/login`;
let tokenResp = {};


this.http.post(url, JSON.stringify({ username: username, password: password }), { observe: 'response' })
.map(response => response.json())
.subscribe((response: HttpResponse<any>) => {
[ ... snip ...]

但我的经验是“订阅”永远不会被调用。

我能做什么?

TIA

原始代码

adminLogin(username, password) {
let url = `${this._apiRoot}/login`;
let tokenResp = {};


this.http.post(url, JSON.stringify({ username: username, password: password }), { observe: 'response' })

.subscribe((response: HttpResponse<any>) => {

let token = response.headers.get("Authorization");

if (token) {

let t = JWT(token);

console.log("-- what is in the token --");
console.log(t);

// need to set the value here
this.userLoggedIn.next(setUser);

}
},
(error: HttpErrorResponse) => {
if (error.error instanceof Error) {
let errorFound = console.error(error.status + " "
+ error.error.message + " " + error.message );
console.error(errorFound);
return Observable.throw(errorFound);
}
else {
let errorFound = "Server-Side Error has taken place ";
console.error(errorFound);
return Observable.throw(new Error(errorFound));
}
});
}

最佳答案

如果你想用 Token 返回一个 observable(无论什么类型),你不能将你的 subscribe 方法参数类型设置为 HttpResponse。我以为你会得到 ts 编译错误

试试这个

adminLogin(username, password) : Observable<JWT> //Assuming this is a type
this.http.post(url, JSON.stringify({ username: username, password: password }), { observe: 'response' })

.map((response: HttpResponse<any>) => {

let token = response.headers.get("Authorization");

if (token) {

let t = JWT(token);

return t;
}
return null; //Or error
},
//Error handling

并在调用方法中

adminLogin(username,password).subscribe((token: JWT )=>
{
//use token
}

关于javascript - 无法将 JSON 对象返回给调用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48800902/

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