如何从 Slim 3 Framework 中的任何 Uri 获取参数?

How to get params from any Uri in Slim 3 Framework?

我是 Slim 3 框架的新手。我想从任何 API URL 获取 api_key 或令牌等参数,以验证请求的 api_key 是否正确。 (任何使用任何方法发送到服务器的请求 API 将始终有 2 个参数:一个 GET api_key 和一个 POST 令牌。)

在 Slim 2 中,我使用 $app->request()->get('api_key'),但 request() 在 Slim 3 中已被删除。如何在参数包含到任何路由之前获取参数?

您似乎在寻找应用程序中间件。

在 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 将所有内容注入到函数参数中,以便您可以使用它。