programing

Slim PHP 및 GET 매개 변수

linuxpc 2023. 7. 30. 17:27
반응형

Slim PHP 및 GET 매개 변수

저는 Slim PHP를 RESTful API의 프레임워크로 사용하고 있습니다.

슬림 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/4의 경우 이 방법을 사용해야 합니다.getQueryParams()PSR 7에서Request물건.

Slim 3 / Slim 4 설명서 인용:

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

저는 json body 또는 url 파라미터를 받기 위해 api를 수정했습니다.

$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이 반환됩니다.특정 유형의 변수만 검색하려는 경우 대신 다음 방법을 사용할 수 있습니다.

GET 변수

$paramValue = $app->request->get('paramName');

POST 변수

$paramValue = $app->request->post('paramName');

PUT 변수

$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에서는 다음 기능도 작동합니다.

routes.sys

require_once 'user.php';

$app->get('/user/create', '\UserController:create');

user.sys

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을 사용할 수도 있습니다.

api 컨트롤러 함수 내부에 다음과 같은 줄 코드를 작성합니다.

public function your_api_function_name(Request $request, Response $response)
    {
        $data = $request->getQueryParams();
        $zip = $data['zip'];
        $radius = $data['radius'];

    }

$data 변수에는 모든 쿼리 매개 변수가 포함됩니다.

대부분의 사람들에게는 분명하겠지만, 만약을 위해 슬림 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);
                }
            }
        }

언급URL : https://stackoverflow.com/questions/8125064/slim-php-and-get-parameters

반응형