Статус HTTP_401_UNAUTHORIZED
Константа HTTP_401_UNAUTHORIZED из модуля fastapi.status
равна числу 401 и имеет текстовое описание
'Unauthorized'. Она применяется в параметре status_code
декораторов маршрутов, а также в исключении HTTPException,
когда нужно сообщить клиенту об отсутствии или недействительности
данных аутентификации. Обычно статус возвращают, когда клиент
не передал заголовок Authorization, передал просроченный
токен или указал неверные учётные данные. В отличие от статуса
403, который означает, что клиент известен, но не имеет прав,
статус 401 означает, что клиент ещё не аутентифицирован.
Синтаксис
from fastapi import status
status.HTTP_401_UNAUTHORIZED
Пример
Давайте вернём статус HTTP_401_UNAUTHORIZED через параметр
status_code декоратора get:
from fastapi import FastAPI, status
app = FastAPI()
@app.get('/protected', status_code=status.HTTP_401_UNAUTHORIZED)
def protected():
return {'detail': 'Unauthorized'}
Результат выполнения кода для адреса /protected:
{"detail": "Unauthorized"}
Пример
Давайте выбросим исключение HTTPException со статусом
HTTP_401_UNAUTHORIZED, когда заголовок аутентификации
не передан:
from fastapi import FastAPI, Header, HTTPException, status
app = FastAPI()
@app.get('/user')
def user(authorization: str = Header(default=None)):
if authorization is None:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail='Not authenticated'
)
return {'token': authorization}
Результат выполнения кода для запроса без заголовка
Authorization:
{"detail": "Not authenticated"}
Пример
Давайте добавим заголовок WWW-Authenticate к ответу,
как того требует спецификация HTTP для статуса 401:
Результат выполнения кода для запроса с неверным токеном:
{"detail": "Invalid token"}
Смотрите также
-
статус
HTTP_403_FORBIDDEN,
который сообщает, что доступ запрещён -
статус
HTTP_400_BAD_REQUEST,
который сообщает о некорректном запросе -
статус
HTTP_422_UNPROCESSABLE_ENTITY,
который сообщает об ошибке валидации данных -
модуль
status,
который содержит все HTTP-статусы FastAPI