РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
239 of 307 menu

Класс APIKeyHeader

Класс APIKeyHeader применяется как зависимость безопасности и извлекает API-ключ из указанного HTTP-заголовка. Первым параметром передаётся имя заголовка name, в котором клиент должен прислать ключ. Параметр auto_error управляет поведением при отсутствии заголовка: если он равен True, FastAPI вернёт ошибку 403, если False - зависимость вернёт None. Дополнительно можно задать описание через description и имя схемы через scheme_name для документации.

Синтаксис

from fastapi.security import APIKeyHeader api_key = APIKeyHeader(name, scheme_name=None, description=None, auto_error=True)

Пример

Давайте создадим зависимость api_key для заголовка 'X-API-Key' и защитим маршрут:

from fastapi import FastAPI, Depends, HTTPException from fastapi.security import APIKeyHeader app = FastAPI() api_key = APIKeyHeader(name='X-API-Key') @app.get('/items/') def read_items(key: str = Depends(api_key)): if key != 'secret': raise HTTPException(status_code=403, detail='Invalid API key') return {'key': key}

Результат выполнения кода для заголовка 'X-API-Key: secret':

{"key": "secret"}

Пример

Давайте установим auto_error=False, чтобы самостоятельно обрабатывать отсутствие заголовка:

<+python+> from fastapi import FastAPI, Depends, HTTPException from fastapi.security import APIKeyHeader app = FastAPI() api_key = APIKeyHeader(name='X-API-Key', auto_error=False) @app.get('/items/') def read_items(key: str = Depends(api_key)): if key is None: raise HTTPException(status_code=401, detail='API key required') return {'key': key} <-python+>

Результат выполнения кода без заголовка:

{"detail": "API key required"}

Пример

Давайте зададим описание для документации через параметр description:

<+python+> from fastapi import FastAPI, Depends from fastapi.security import APIKeyHeader app = FastAPI() api_key = APIKeyHeader( name='X-API-Key', description='API key for access to protected endpoints' ) @app.get('/items/') def read_items(key: str = Depends(api_key)): return {'key': key} <-python+>

Результат выполнения кода для заголовка 'X-API-Key: abcde':

{"key": "abcde"}

Смотрите также

  • класс APIKeyQuery,
    который извлекает API-ключ из query-параметра
  • класс APIKeyCookie,
    который извлекает API-ключ из cookie
  • функция Depends,
    которая внедряет зависимость в обработчик
  • функция Security,
    которая внедряет зависимость безопасности с областями доступа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить