Подтвердить что ты не робот

Как отправить запрос во внешний API

Я новичок в Symfony2, и я пытаюсь отправить

new Request()

и внешнего API. Это то, что у меня есть, но я не знаю, правильно ли это использовать встроенную библиотеку запросов/ответов.

$request = new Request('https://myservice.com/apimethod?foo=bar', 'GET'); 

Может ли кто-нибудь сказать мне, если это вернет ответ, если API, который я пытаюсь вызвать, существует?! Если нет, что я делаю неправильно?

4b9b3361

Ответ 1

В Symfony2 класс Request представляет HTTP-запрос, сделанный на ваш сайт. В принципе, если вы перейдете к www.yoursite.com/someaction, Symfony создаст объект Symfony\Component\HttpFoundation\Request. Этот объект содержит методы, которые вы можете использовать для проверки HTTP-запроса (например, если он содержит переменные GET или POST.)

Это хорошее объяснение принципов Symfony и HTTP. Я также рекомендую посмотреть исходный код запроса, чтобы узнать, что он может сделать.

Чтобы достичь того, что вы пытаетесь сделать в своем примере, вам нужно использовать cURL. Я лично использую класс оболочки поверх cURL, который вы можете найти здесь.

Надеюсь, что это поможет.

Ответ 2

https://github.com/CircleOfNice/CiRestClientBundle

Это самый простой способ отправить запрос во внешний API. Он предоставляет все методы http как функции и прост в использовании.

$restClient = $this->container->get('ci.restclient');

$restClient->get('http://www.someUrl.com');
$restClient->post('http://www.someUrl.com', 'somePayload');
$restClient->put('http://www.someUrl.com', 'somePayload');
$restClient->delete('http://www.someUrl.com');
$restClient->patch('http://www.someUrl.com', 'somePayload');

$restClient->head('http://www.someUrl.com');
$restClient->options('http://www.someUrl.com', 'somePayload');
$restClient->trace('http://www.someUrl.com');
$restClient->connect('http://www.someUrl.com');

Если вы хотите использовать клиентов для отдыха только для объектов CRUD, то я думаю, вам стоит взглянуть на

https://github.com/CircleOfNice/DoctrineRestDriver

который поможет вам избавиться от запросов отправки вручную и ответов на отображение, потому что Doctrine выполняет эту работу за вас.

// Sends a GET request to http://$driverUrl/@TableAnnotation/1 and returns a valid MyEntity Entity
$entity = $em->find("Some\Namespace\MyEntity", 1);

Ответ 4

Используйте Guzzle из здесь.

Exemple:

$client = new \GuzzleHttp\Client();
$res = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle');
echo $res->getStatusCode();