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

Метод isMethodCacheable

Метод isMethodCacheable класса Request возвращает true, если HTTP-метод текущего запроса считается кэшируемым согласно спецификации HTTP, и false в противном случае. Параметров метод не принимает. Кэшируемыми считаются методы GET и HEAD - именно их ответы разрешено сохранять в промежуточных кэшах. Методы POST, PUT, DELETE, PATCH и OPTIONS не кэшируются.

Синтаксис

public function isMethodCacheable(): bool

Пример

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

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(Request $request): Response { $res = $request->isMethodCacheable(); return new Response(var_export($res, true)); } } ?>

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

true

Пример

Давайте проверим кэшируемость метода для POST-запроса:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_create', methods: ['POST'])] public function create(Request $request): Response { $res = $request->isMethodCacheable(); return new Response(var_export($res, true)); } } ?>

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

false

Пример

Давайте переберём несколько методов и выведем результат проверки для каждого из них:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/check', name: 'article_check')] public function check(): Response { $methods = ['GET', 'HEAD', 'POST', 'PUT', 'DELETE']; $res = []; foreach ($methods as $method) { $request = Request::create('/article', $method); $res[$method] = $request->isMethodCacheable(); } return new Response(var_export($res, true)); } } ?>

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

["GET" => true, "HEAD" => true, "POST" => false, "PUT" => false, "DELETE" => false]

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

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