Как правильно организовать архитектуру API в Spring Boot приложении?
Здравствуйте.
Я создал веб-приложение с использование Spring boot, Spring security.
Перед тем, как показать пользователю страницу user_page, он проходит стандартную авторизацию, вводя логин и пароль. Далее он получается страницу user_page. На странице он производит некоторые операции, которые обновляют состояние сервера через ajax, для этого есть 3 end point'a которые принимают POST запрос. На этом этапе все работает.
Но у меня стоит задача, чтобы пользователь мог производить всё те же действия, но уже через API.
Как это работает сейчас.
Чтобы получить доступ к API, пользователь должен получить токен. Это абсолютно рандомный набор символов, который генерирует при регистрации пользователя. Пользователь может его получить на все той-же странице user_page. Далее любой запрос к API должен сопровождаться этим токеном. Т.к. API обращается к тем-же end point'ам что и страница user_page через ajax, то и ajax автоматически передает этот токен.
Все работает, но с точки зрения архитектуры - это ужасно.
Как правильно организовать API в данном случае?
Как производить авторизацию при подключении к API?
Стоит ли разделять end poin'ы для API и ajax, если они выполняют одинаковые задачи?
Чтобы внести немного ясности, API нужно для того, чтобы пользователь мог сделать все то же, что он делает на странице user_page, но быстрее, ибо он напишет свой клиент.
Как правильно организовать авторизацию в данном случае, чтобы понимать какой пользователь пользуется API? Стоит ли разделять end point'ы для API и те, что использует ajax на странице user_page?
Далее любой запрос к API должен сопровождаться этим токеном.
так и должно быть. Все нормально же вроде. Какая тебе разница какой фронт юзает end point? в этом же и есть весь смысл разделения на бэк и фронт, что бэк не знает что там на клиенте, мобильное приложение, другой бэк или запрос в постмане
Главное правило что ручка возвращает данных ровно столько сколько надо и не больше.