我正在使用 Slim PHP 作为 RESTful API 的框架,到目前为止它很棒。超级容易使用,但我确实有一个问题我找不到答案。如何从 Slim PHP 中的 URL 获取 GET 参数?
例如,如果我想使用以下内容:
http://api.example.com/dataset/schools?zip=99999&radius=5
星期一的例子?我是不是想多了?提前致谢!
您可以在 Slim 框架中非常轻松地做到这一点,您可以使用:
$paramValue = $app->request()->params('paramName');
$app 这里是一个 Slim 实例。
或者如果你想更具体
//获取参数
$paramValue = $app->request()->get('paramName');
//POST参数
$paramValue = $app->request()->post('paramName');
您会在特定路线中像这样使用它
$app->get('/route', function () use ($app) {
$paramValue = $app->request()->params('paramName');
});
您可以阅读有关请求对象 http://docs.slimframework.com/request/variables/的文档
从Slim v3开始:
$app->get('/route', function ($request, $response, $args) {
$paramValue = $request->params(''); // equal to $_REQUEST
$paramValue = $request->post(''); // equal to $_POST
$paramValue = $request->get(''); // equal to $_GET
// ...
return $response;
});
我修复了我的 api 以接收这样的 json 正文或 url 参数。
$data = json_decode($request->getBody()) ?: $request->params();
这可能不适合所有人,但对我有用。
苗条 3
$request->getQueryParam('page')
或者
$app->request->getQueryParam('page')
如果您想获取带有参数名称的参数
$value = $app->request->params('key');
params() 方法将首先搜索 PUT 变量,然后是 POST 变量,然后是 GET 变量。如果没有找到变量,则返回 null。如果您只想搜索特定类型的变量,则可以使用以下方法:
//--- 获取变量
$paramValue = $app->request->get('paramName');
//--- 发布变量
$paramValue = $app->request->post('paramName');
//--- 放置变量
$paramValue = $app->request->put('paramName');
如果您想从请求中获取所有参数而不指定参数名称,您可以将它们全部放入数组中,格式为 KEY => VALUE
$data = json_decode( $app->request->getBody() ) ?: $app->request->params();
$data 将是一个数组,其中包含来自请求的所有字段,如下所示
$data = array(
'key' => 'value',
'key' => 'value',
//...
);
希望对你有帮助!
采用$id = $request->getAttribute('id'); //where id is the name of the param
在 Slim 3.0 中,以下内容也有效:
路由.php
require_once 'user.php';
$app->get('/user/create', '\UserController:create');
用户.php
class UserController
{
public function create($request, $response, array $args)
{
$username = $request->getParam('username'));
$password = $request->getParam('password'));
// ...
}
}
不太了解 Slim PHP,但如果你想从 URL 访问参数,那么你应该使用:
$_SERVER['QUERY_STRING']
您会在 Google 上找到大量博客文章来解决此问题。您还可以使用 PHP 函数parse_url。
对大多数人来说可能很明显,但以防万一,基于 vip 关于Slim 3的答案,您可以使用类似以下的内容来获取参数的值。
$logger = $this->getService('logger');
$params = $request->getQueryParams();
if ($params) {
foreach ($params as $key => $param) {
if (is_array($param)) {
foreach ($param as $value) {
$logger->info("param[" . $key . "] = " . $value);
}
}
else {
$logger->info("param[" . $key . "] = " . $param);
}
}
}