РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
988 of 1361 menu

Метод request класса HttpClient

Метод request класса HttpClient выполняет HTTP-запрос к удалённому серверу и возвращает объект ClientResponse. Первым параметром передаётся HTTP-метод (например, 'GET' или 'POST'), вторым - URL адрес, третьим - массив опций запроса: заголовки, тело, query-параметры, таймауты и другие. Метод является основным способом обращения к внешним сервисам через компонент HttpClient.

Синтаксис

$client->request(string $method, string $url, array $options = []): ClientResponse

Пример

Давайте выполним простой GET-запрос к внешнему адресу:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Contracts\HttpClient\HttpClientInterface; class ApiController extends AbstractController { public function index(HttpClientInterface $client): Response { $res = $client->request('GET', 'https://example.com/api'); return new Response($res->getContent()); } } ?>

Результат выполнения кода:

"page found"

Пример

Давайте передадим query-параметры через опцию query:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Contracts\HttpClient\HttpClientInterface; class ApiController extends AbstractController { public function index(HttpClientInterface $client): Response { $res = $client->request('GET', 'https://example.com/search', [ 'query' => [ 'name' => 'abcde', 'page' => 1, ], ]); return new Response($res->getContent()); } } ?>

Результат выполнения кода:

"abcde"

Пример

Давайте отправим POST-запрос с телом в формате JSON:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Contracts\HttpClient\HttpClientInterface; class ApiController extends AbstractController { public function index(HttpClientInterface $client): Response { $res = $client->request('POST', 'https://example.com/api', [ 'json' => [ 'name' => 'abcde', 'text' => 'hello', ], ]); return new Response($res->getContent()); } } ?>

Результат выполнения кода:

"created"

Пример

Давайте передадим собственные заголовки и прочитаем статус-код ответа:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Contracts\HttpClient\HttpClientInterface; class ApiController extends AbstractController { public function index(HttpClientInterface $client): Response { $res = $client->request('GET', 'https://example.com/api', [ 'headers' => [ 'Accept' => 'application/json', 'Authorization' => 'Bearer token', ], ]); return new Response((string) $res->getStatusCode()); } } ?>

Результат выполнения кода:

"200"

Смотрите также

  • класс HttpClient,
    который выполняет HTTP-запросы к внешним сервисам
  • метод stream,
    который возвращает поток ответа без буферизации
  • метод getStatusCode,
    который возвращает статус-код ответа
  • метод getContent,
    который возвращает тело ответа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить