修剪PHP和GET参数

时间:2011-11-14 16:53:21

标签: php rest slim

我正在使用Slim PHP作为RESTful API的框架,到目前为止它非常棒。超级易于使用,但我确实有一个问题,我找不到答案。如何从Slim PHP中的URL中获取GET参数?

例如,如果我想使用以下内容:

http://api.example.com/dataset/schools?zip=99999&radius=5

周一的情况?我是否在思考它?提前谢谢!

9 个答案:

答案 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

引用the documentation

  

您可以将查询参数作为关联数组获取   使用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);
                }
            }
        }