使用可观察的rxjs从前端从springboot后端调用服务。甚至考虑过使用.subscribe函数调用此服务,该服务成功返回一个值,但我无法进入subscription块,它直接到达该块的末尾。
login.component.ts
validate() {
console.log('need to validate');
this.loginService.checkLogin(this.userName, this.pwd).subscribe(resp => {
console.log(resp);
if (resp === 'success') {
this.router.navigateByUrl('/home');
}
}, error => {
this.toastr.error(error.error.message);
});
}
login.service.ts
export class LoginServiceService {
url = 'http://localhost:8089/login/check';
constructor( private http: HttpClient) { }
public checkLogin(userName, password): Observable <any> {
let headersValue = new HttpHeaders();
headersValue = headersValue.set('Access-Control-Allow-Origin', '*');
headersValue = headersValue.set('Content-Type', 'application/json');
headersValue = headersValue.set('userName', userName);
headersValue = headersValue.set('password', password);
return this.http.get<any[]>(this.url, { headers: headersValue });
}
}
预期结果:它应该输入subscription块并在控制台中显示resp,还应该输入if块。
实际结果: 仅“显示需要验证”。
,并在错误检查后直接到达程序段结尾。
答案 0 :(得分:0)
我认为您的问题可能与标题有关。我不确定您是否需要它们,但更具体地说,我认为userName和password根本不属于它们。它们可能应该是参数。我认为以下内容可能会对您有所帮助:
public checkLogin(userName, password): Observable <any> {
let headersValue = new HttpHeaders();
headersValue = headersValue.set('Access-Control-Allow-Origin', '*');
headersValue = headersValue.set('Content-Type', 'application/json');
const params = { userName, password };
return this.http.get<any[]>(this.url, { headers: headersValue, params });
}