如何解决用 Slim 覆盖查询参数
我查看了几个地方,但没有找到在 PHP 中使用 Slim 中间件覆盖请求中的参数的方法。
用例:我想转义进入我所有端点的所有查询参数,但我不想在任何地方编写相同的代码,所以我的想法是使用 slim 提供的中间件并清理那里的参数。
这是一件可以做的事吗?
解决方法
使用中间件,你需要这样的东西:
// relevant imports
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
// middleware after $app has been created
$app->addMiddleware(new class () implements MiddlewareInterface {
public function process(
ServerRequestInterface $request,RequestHandlerInterface $handler
): ResponseInterface {
$queryParams = $request->getQueryParams();
// $queryParams is an array of the query parameters.
// do whatever with them.
// e.g. add a new one:
$queryParams['foo'] = 'bar;
// replace the request's ones with our new set:
$request = $request->withQueryParams($queryParams);
// continue with next middleware all the way through
// to the handler with our new set of query parameters.
return $handler->handle($request);
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。