我正在使用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实例。
或者,如果你想更具体
// 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;
});
对于Slim 3,您需要在PSR 7 getQueryParams()
对象上使用Request
方法。
您可以使用getQueryParams()在Request对象上将查询参数作为关联数组。
您还可以使用getQueryParam($ key,$ default = null)获取单个查询参数值,如果参数缺失,则使用可选的默认值。
我修复了我的api以接收像这样的json body OR url参数。
$data = json_decode($request->getBody()) ?: $request->params();
这可能不适合所有人,但它对我有用。
在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'));
// ...
}
}
对Slim PHP不太了解,但是如果你想从URL访问参数那么你应该使用:
$_SERVER['QUERY_STRING']
你会在谷歌上找到一堆博客文章来解决这个问题。您还可以使用PHP函数parse_url。
如果你想用PARAM NAME获得参数
$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');
如果您想要在没有指定参数名称的情况下获取所有参数,您可以将所有这些参数放入格式键=>值
$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
对大多数人来说可能是显而易见的,但为了以防万一,在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);
}
}
}