Класс 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, чтобы
самостоятельно обрабатывать отсутствие заголовка:
Результат выполнения кода без заголовка:
{"detail": "API key required"}
Пример
Давайте зададим описание для документации
через параметр description:
Результат выполнения кода для заголовка
'X-API-Key: abcde':
{"key": "abcde"}
Смотрите также
-
класс
APIKeyQuery,
который извлекает API-ключ из query-параметра -
класс
APIKeyCookie,
который извлекает API-ключ из cookie -
функция
Depends,
которая внедряет зависимость в обработчик -
функция
Security,
которая внедряет зависимость безопасности с областями доступа