Давайте представим REST API, который может возвращать JSON, XML, HTML и другие форматы.В случае веб-клиента браузера без включенного JavaScript, API возвращает HTML.Токены используются для аутентификации и авторизации.
В классическом веб-проекте может случиться так, что перенаправление должно быть выполнено со страницы A на другую страницу BЭто может быть использовано, например, для отображения приветственного сообщения или сообщения об ошибке на другой странице.В этом случае для отображения сообщения (например, прошивки) со страницы A на странице B мы обычно используем сеанс.Два простых (и минимизирующих) примера в выражении (но концепция аналогична другим технологиям):
// With session directly
const session = require('express-session');
app.use(session({ /* ... */ });
function (req, res, next) {
req.session.message = 'Welcome, you are connected';
return res.redirect('/');
}
<p class="message">${ session.message }</p>
// With a library as connect-flash
const flash = require('connect-flash');
app.use(flash());
function (req, res, next) {
req.flash('error', {
message: 'An error!',
});
return res.redirect('/login');
}
<p class="message">${ flash.message }</p>
Теперь, основываясь на принципах REST, для соблюдения ограничений без сохранения состояния он не должен использовать сеансы, которые хранятсостояние между двумя запросами.
У меня такой вопрос: Как веб-сервер без состояния должен обычно передавать сообщения между двумя запросами? (в случае перенаправления)
- Сессия: Не сохраняется кактребуется
- DB?
- Строка запроса?
- Cookie?
- Другое?
Примечание: я знаю, как реализовать этирешения, но я прошу правильный способ сделать это в случае веб-сервера без состояния.Как обычно REST API реализует это?
После этого вопроса у меня есть два (необязательных) недоразумения.
На основе ответ о переполнении стека :
Это не мешает другим службам, с которыми общается веб-сервер, поддерживать состояние о бизнес-объектах, таких как корзины покупок, только не о текущем состоянии приложения / сеанса клиента.
Что здесь означают другие службы ?
На основании этого комментария от того же самогоответ :
Аутентификация может быть неявной в этом состоянии. Считаете ли вы, что Facebook делает «доступ к базе данных» при каждом запросе своего REST API?Или Google в этом отношении?подсказка: нет
Что означает неявное в состоянии ?Если они используют токен или подобный процесс аутентификации, то они должны каждый раз получать доступ к базе данных, чтобы получить нового пользователя, нет?
Заранее спасибо.