Передача данных через URL с пост-запросом в Slim - PullRequest
0 голосов
/ 18 февраля 2020

Я создаю API, и мне интересно, есть ли способ передать данные через URL с помощью метода post, например

add?name={name}&age={age}…

У меня нет большого опыта разработки API , но я помню, что этот URL работал в Spring Boot.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 22 февраля 2020

Прежде всего, создайте маршрут, который обрабатывает запросы POST HTTP без какого-либо параметра запроса.

$app->post('/add', function (Request $request, Response $response, array $args) {
    // get query parameters as an associative array
    $params = $request->getQueryParams();

    // return $params as a JSON data
    $response->getBody()->write(json_encode($params));
    return $response->withHeader('Content-Type', 'application/json');
});

Затем выполните запрос POST HTTP к этому маршруту с параметрами запроса: /add?name=Foo&age=27.

Выход:

{
    "name": "Foo",
    "age": "27"
}
0 голосов
/ 19 февраля 2020

Вы можете передавать данные в URL-адрес, как это в любом типе HTTP-запроса. Тем не менее, при использовании POST / PUT / PATCH я бы рекомендовал использовать JSON полезную нагрузку, отправляемую в качестве тела запроса.

Если вы хотите прочитать аргумент в Slim

<?php
$app->get('/hello/{name}', function (Request $request, Response $response, array $args) {

    $name = $args['name'];

    // or
    $name = $request->getArgument('name');

    // When Request URL is
    // /hello/world?age=24
    // you can read the age argument as
    $name = $request->getArgument('age');

    // This behaviour is defined in PSR-7 and available across PHP frameworks

    return $response;
});

Обычным PHP Вы можете прочитать аргумент, используя суперглобальный $ _GET или $ _POST

<?php
$name = $_GET['age'];
...