TypeScript Api Manager и обработка сессий - PullRequest
0 голосов
/ 20 марта 2019

Я создаю менеджер Api, используя машинопись для API, в который я хочу интегрироваться.Здесь есть несколько соображений:

  1. У меня есть модели, например: Student Модель.Эта модель может войти в систему для получения токена сеанса, например:

    const student = Student.login ('username', 'password');

    const courses = teacher.getCourses (student.id);

    ...

Этот метод входа будет реализован следующим образом:

class Student {
    ...
    private token: string = undefined;
    ...
    public static login(username:string, password:string): Promise<Student> {
        return MyManager.post('https://apihost/student/login', {username, password})
            .then((res) => {return new Student(res.data)});
    }
    ...
}

Теперь предположим, что пользователь хочетчтобы увидеть список курсов, в которых сейчас учится студент, будет вызван метод getCourses, который будет реализован следующим образом:

public getCourses = () => {
    return MyManager.get("/courses", {token: this.token})...
}

Хорошо, это проблема прямо здесь ...

  • Как сохранить токен в ApiManager, чтобы использовать его позже?
  • Должен ли я использовать Singleton для этого?setToken(token) при успешном входе в систему.
  • Как поделиться этим токеном и ApiManager с другими классами, такими как Teacher?

Что если я хочу сделать:

const teacher = new Teacher();
teacher.getCourses(student.id);
...

class Teacher {
    ...
    public getCourses() {
        return MyManager.get("/courses", {token: ???????}) 
        ...
    }
    ...
}

Я осматриваюсь и думаю, что мне нужно что-то вроде класса orm / odm Connection для хранения токена, и тогда мои модели могут просто наследоваться от ManagerClass или чего-то еще.Что Вы думаете об этом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...