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

Метод withOptions

Метод withOptions класса HttpClient возвращает новый экземпляр клиента с объединёнными опциями. Первым параметром передаётся массив опций, которые нужно добавить или переопределить. Опции применяются ко всем последующим запросам данного экземпляра клиента.

Синтаксис

public function withOptions(array $options): static

Пример

Давайте создадим клиент с базовым URL и таймаутом:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpClient\HttpClient; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { $client = HttpClient::create(); $client = $client->withOptions([ 'base_uri' => 'https://example.com', 'timeout' => 5, ]); $res = $client->request('GET', '/api/article'); return new Response($res->getContent()); } } ?>

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

"article"

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpClient\HttpClient; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/user', name: 'article_user')] public function user(): Response { $client = HttpClient::create(); $client = $client->withOptions([ 'headers' => [ 'Authorization' => 'Bearer abcde', 'Accept' => 'application/json', ], ]); $res = $client->request('GET', 'https://example.com/api/user'); return new Response((string) $res->getStatusCode()); } } ?>

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

"200"

Пример

Давайте переопределим опции при повторном вызове withOptions:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpClient\HttpClient; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/hello', name: 'article_hello')] public function hello(): Response { $client = HttpClient::create(); $client = $client->withOptions([ 'timeout' => 5, 'headers' => ['Accept' => 'text/html'], ]); $client = $client->withOptions([ 'timeout' => 10, ]); $res = $client->request('GET', 'https://example.com/hello'); return new Response($res->getContent()); } } ?>

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

"hello"

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

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