development

Slim PHP 및 GET 매개 변수

big-blog 2020. 12. 28. 22:28
반응형

Slim PHP 및 GET 매개 변수


RESTful API의 프레임 워크로 Slim PHP를 사용하고 있는데 지금까지는 훌륭합니다. 작업하기 매우 쉽지만 답을 찾을 수없는 질문이 하나 있습니다. 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/ 에 대한 설명서를 읽을 수 있습니다.

현재로 슬림 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;
});

들어 슬림 3 당신이 방법을 사용할 필요가 getQueryParams()PSR 7 Request객체입니다.

문서 인용 :

getQueryParams ()를 사용하여 쿼리 매개 변수를 Request 객체의 연관 배열로 가져올 수 있습니다.

getQueryParam ($ key, $ default = null)을 사용하여 매개 변수가 누락 된 경우 선택적 기본값과 함께 단일 쿼리 매개 변수 값을 가져올 수도 있습니다.


이와 같은 json 본문 또는 URL 매개 변수를 수신하도록 API를 수정했습니다.

$data = json_decode($request->getBody()) ?: $request->params();

이것은 모든 사람에게 적합하지는 않지만 나를 위해 일했습니다.


Slim 3.0에서는 다음도 작동합니다.

route.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']

이 문제를 해결하기 위해 Google에서 많은 블로그 게시물을 찾을 수 있습니다. PHP 함수 parse_url을 사용할 수도 있습니다 .


PARAM 이름이있는 PARAM을 받고 싶다면

$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');

매개 변수 이름을 지정하지 않고 요청에서 모든 매개 변수를 가져 오려면 모든 매개 변수를 FORMAT 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에 관한 vip의 대답을 기반으로 한 경우 다음과 같은 것을 사용하여 매개 변수 값을 가져올 수 있습니다.

        $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);
                }
            }
        }

슬림 3

$request->getQueryParam('page')

또는

$app->request->getQueryParam('page')

참조 URL : https://stackoverflow.com/questions/8125064/slim-php-and-get-parameters

반응형