Похоже, вы ищете промежуточное ПО приложения.
В slim 3 это может выглядеть так:
$app = new \slim\App();
$app->add(function($request, $response, $next) {
// check if the header is set
if ($request->getHeader('api_key')) {
// check key
if (key_is_valid($request->getHeader('api_key'))) { // dummy function
return $next($request, $response);
}
}
});
Это промежуточное ПО проверяет каждый запрос на ключ API и выполняет запрос, только если ключ действителен.
Конечно, вы должны реализовать какую-то обработку ошибок, если ключ недействителен.
Slim вводит все в параметры функции, чтобы вы могли его использовать.