我正在使用Slim PHP作为RESTful API的框架,到目前为止它非常棒。超级易于使用,但我确实有一个问题,我找不到答案。如何从Slim PHP中的URL中获取GET参数?
例如,如果我想使用以下内容:
http://api.example.com/dataset/schools?zip=99999&radius=5
周一的情况?我是否在思考它?提前谢谢!
答案 0 :(得分:105)
您可以在Slim框架内轻松完成此操作,您可以使用:
$paramValue = $app->request()->params('paramName');
$ app这是一个Slim实例。
或者如果你想更具体
// GET参数
$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;
});
答案 1 :(得分:22)
对于 Slim 3 ,您需要在PSR 7 getQueryParams()
对象上使用方法Request
。
您可以将查询参数作为关联数组获取 使用getQueryParams()请求对象。
您还可以获得单个查询参数值,并带有可选的默认值 如果参数丢失,则使用getQueryParam($ key,$ default = null)。
答案 2 :(得分:3)
我修复了我的api以接收像这样的json body OR url参数。
$data = json_decode($request->getBody()) ?: $request->params();
这可能不适合所有人,但它对我有用。
答案 3 :(得分:2)
在Slim 3.0中,以下内容也有效:
<强> routes.php文件强>
require_once 'user.php';
$app->get('/user/create', '\UserController:create');
<强> user.php的强>
class UserController
{
public function create($request, $response, array $args)
{
$username = $request->getParam('username'));
$password = $request->getParam('password'));
// ...
}
}
答案 4 :(得分:1)
对Slim PHP不太了解,但是如果你想从URL访问参数那么你应该使用:
$_SERVER['QUERY_STRING']
你会在Google上找到一堆博客文章来解决这个问题。您还可以使用PHP函数parse_url。
答案 5 :(得分:1)
如果您想使用参数名称获取参数
$value = $app->request->params('key');
params()方法首先搜索PUT变量,然后是POST变量,然后是GET变量。如果未找到变量,则返回null。如果您只想搜索特定类型的变量,则可以使用这些方法:
// --- GET变量
$paramValue = $app->request->get('paramName');
// --- POST变量
$paramValue = $app->request->post('paramName');
// --- PUT变量
$paramValue = $app->request->put('paramName');
如果您想要获取所有参数而无需指定参数名称, 您可以将所有这些内容放入格式KEY =&gt;中VALUE 强>
$data = json_decode( $app->request->getBody() ) ?: $app->request->params();
$ data将是一个包含请求中所有字段的数组,如下所示
$data = array(
'key' => 'value',
'key' => 'value',
//...
);
希望它可以帮到你!
答案 6 :(得分:1)
使用$id = $request->getAttribute('id'); //where id is the name of the param
答案 7 :(得分:1)
苗条3
$request->getQueryParam('page')
或
$app->request->getQueryParam('page')
答案 8 :(得分:0)
对于大多数人来说可能很明显,但以防万一,以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);
}
}
}