Я создаю менеджер Api, используя машинопись для API, в который я хочу интегрироваться.Здесь есть несколько соображений:
У меня есть модели, например: 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 или чего-то еще.Что Вы думаете об этом?