Я немного удивлен, что после того, как я искал это некоторое время, я не нашел столько ответов, сколько я ожидал (ну, я не нашел ни одного), так что, возможно, задав вопрос здесь, мы сможем помочь улучшить результаты поиска.
Я создаю REST api с аутентификацией на основе JWT. Существует маршрут / auth / login, который возвращает токен после проверки логина / пароля, и впоследствии токен отправляется на каждом маршруте в HTTP-заголовке авторизации.
Нет, предположим, что кто-то запрашивает другой маршрут (скажем, / cars) без отправки токена (то есть до входа в систему). Если я верну 401 unauthorized, я могу сделать внешний запрос / auth / login, чтобы получить токен.
Но, строго говоря, это не соответствует спецификации REST, потому что каждый ресурс должен быть обнаружен из начальный, и клиент, обращающийся к / cars и получивший 401, не будет знать о /auth/login.
Таким образом, другим вариантом будет перенаправление, подобное 302. Но эта семантика означает, что ресурс был временно перемещен, и это не так (ресурс по-прежнему / cars, вам просто нужно сначала пройти аутентификацию).
Итак, как правильно выполнить эту процедуру в "истинном" rest api?