Angular Http Request - 获取数据

时间:2017-12-19 16:20:44

标签: angular http

我正在尝试创建用户日志记录服务,但是我遇到了一些数据解析问题,当用户点击登录按钮时,http请求被调用到api服务器,如果用户名和密码是正确的,服务器会响应用户信息而我需要将此信息解析为User变量,如果user不为null,则返回true,否则返回false,但metod始终返回true ...

方法用户服务:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import 'rxjs/add/operator/map';
import { User } from '../entities/User';

@Injectable()
export class UserService {

  private usersUrl: 'http://localhost:8080/api/users';

  user: User;

  constructor(private http: HttpClient) {}

  isLoggedIn() {
    return this.user != null;
  }

  isAdmin() {
    return this.user.isAdmin;
  }

  unLoggin() {
    this.user = null;
  }

  login(username: string, password: string) {
    return this.http.get<User>(`${this.usersUrl}/verify?username=${username}&password=${password}`)
      .map(
        user => {
          this.user = user;
          return this.user != null;
        });
  }

}

json中的用户示例:

{"id":2,"name":"Some","email":"sometni","username":"iafouafa","password":"Hoifhnaol"}

我认为存在多个问题,首先是方法是无效的,这个我可以解决,但是如果我重新将它重新设置为返回布尔值并且将return语句放在最后而不是map操作符它将始终返回false ...如果您需要更多信息,请告诉我您的需求。

抱歉我的英语不好。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

试试这个:

login(username: string, password: string) {
    return this.http.get<User>(`${this.usersUrl}/verify?username=${username}&password=${password}`)
      .map(
        user => {
          return user;
        });
  }

现在执行登录 performe在某处记录

this.login(username,pass).subascribe(user => {
       this.user = user;
     }

现在你可以调用你的isLoggedIn()方法