Я использую 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 отлично работает, показывая соответствующие ответы.
Но я не могу проверить его с жужжанием, поскольку я не могу найти вариант для передачи моего параметра.
Вот пример, который определяет и выполняет ваш маршрут 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: Я НЕ тестировал код выше. Возможно, он готов к работе или может не работать. Могут потребоваться небольшие изменения.
MyApi::deleteEntity()
. Это намного лучше и ремонтопригоднее.