как передать параметр удалить запрос в жрете

0

Я использую guzzle как http-клиент для тестирования моего symfony api.

В документации есть параметр url, но как передать параметр userid & api id, чтобы он мог удалить конкретную запись конкретного пользователя.

Когда я проверил с завитой

curl -i -X DELETE http://localhost/us/serenify/web/app_dev.php/userapi/delete/1/6

Мой api отлично работает, показывая соответствующие ответы.

Но я не могу проверить его с жужжанием, поскольку я не могу найти вариант для передачи моего параметра.

  • 0
    Какое сообщение об ошибке вы получаете?
  • 0
    localhost / us / serenify / web / app_dev.php / userapi / delete / 1/7 Это мой пользователь API, где 1 - идентификатор пользователя, а 7 - идентификатор API. Я пробовал $ request = $ client-> createRequest ('delete', ' localhost / us / serenify / web / app_dev.php / userapi / delete / 1/7 /' ); Это его сейчас работает. Я пытался $ request = $ client-> createRequest ('delete', ' localhost / us / serenify / web / app_dev.php / userapi / delete /' ); & попробуйте передать параметр через setField, но он не работает. Если у вас есть пример для передачи данных, пожалуйста, дайте мне знать.
Показать ещё 3 комментария
Теги:
curl

1 ответ

0
Лучший ответ

Вот пример, который определяет и выполняет ваш маршрут Symfony:

{
    "operations": {
        "deleteEntity": {
            "httpMethod": "DELETE",
            "uri": "/userapi/delete/{userid}/{apiid}",
            "summary": "Deletes an entity",
            "parameters": {
                "userid": {
                    "location": "query"
                },
                "apiid": {
                    "location": "query"
                }
            }
        }
    }
}

и код:

class MyApi
{
    protected $client;

    public function __construct(ClientInterface $client, $baseUrl)
    {
        $this->client = $client;

        //tell the client what the base URL to use for the request
        $this->client->setBaseUrl($baseUrl);

        //fill the client with all the routes
        $description = ServiceDescription::factory("/path/to/routes.json");
        $this->client->setDescription($description);
    }

    public function deleteEntity($userId, $apiId)
    {
        $params = array(
            'userid' => $userId,
            'apiid' => $apiId
        );

        $command = $this->client->getCommand('deleteEntity', $params);
        $command->prepare();

        $response = $this->client->execute($command);

        return $response;
    }
}

$client = new Guzzle\Service\Client();

$api = new MyApi($client, ' http://localhost/us/serenify/web/app_dev.php');
$api->deleteEntity(1, 6);

Теперь, когда он в настоящее время стоит, сгенерированный маршрут будет выглядеть примерно так:

http://localhost/us/serenify/web/app_dev.php/userapi/delete? userid = 1 & apiid = 6.

Если вы хотите, чтобы параметры, которые не были переданы с помощью Guzzle в качестве параметров запроса, но вместо этого, как параметры URL, все, что вам нужно сделать, это изменить их тип в файле определения JSON от запроса к uri.

PS: Я НЕ тестировал код выше. Возможно, он готов к работе или может не работать. Могут потребоваться небольшие изменения.

  • 0
    Привет, ребята, я нашел способ, не нужно ничего делать. Я реализовал по-другому. <code> открытая функция testDeleteAction () {$ client = new Client (); $ request = $ client-> createRequest ('Удалить', ' localhost / us / serenify / web / app_dev.php / userapi / delete / 2/22' ); $ response = $ client-> send ($ request); echo "<pre>"; print_r ($ ответ); echo "</ pre>"; Выход; } </ code>
  • 0
    @hiteshrane Вы жестко кодируете значения в URL, не совсем идеально. Посмотрите на мой код выше, другой URL будет сгенерирован на основе параметров, которые вы передаете MyApi::deleteEntity() . Это намного лучше и ремонтопригоднее.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню