Рейтинг:0

Вызовы REST API всегда кэшируются

флаг cn

В Drupal 9.2.6 у меня проблема с кэшированием.

Код, который я использую, следующий.

$returnValues ​​= [
  'значение' => 'тест',
  'время' => время(),
];

$response = новый ResourceResponse($returnValues, 200, []);
$disable_cache = новые CacheableMetadata();
$disable_cache->setCacheMaxAge(0);
$response->addCacheableDependency($disable_cache);
вернуть $ответ;

Это приводит к этой ошибке.

TypeError: Аргумент 1, передаваемый Symfony\Component\Serializer\Encoder\ChainEncoder::getEncoder(), должен быть строкового типа, с нулевым значением, вызываемым в /webspace/public/vendor/symfony/serializer/Encoder/ChainEncoder.php в режиме онлайн 49 в Symfony\Component\Serializer\Encoder\ChainEncoder->getEncoder() (Zeile 80 в /webspace/public/vendor/symfony/serializer/Encoder/ChainEncoder.php)

Это тоже не работает.

$response = новый ResourceResponse($returnValues);
$response->addCacheableDependency($returnValues);
вернуть $ответ;

Что не так?

Kevin avatar
флаг in
Значит, вы не хотите, чтобы это кэшировалось? Но вы добавляете кешируемую зависимость? https://drupal.stackexchange.com/questions/182863/rest-get-without-caching
YusufFidan avatar
флаг cn
@apaderno Это также кэшируется: $ответ = новый ответ(); $ответ->setStatusCode(200); $ответ->setContent(json_encode($returnValues)); вернуть $ответ;
флаг us
Этот вопрос, вероятно, имеет несколько действительных ответов: https://drupal.stackexchange.com/q/182863/10645
YusufFidan avatar
флаг cn
Я не знаю почему, но сегодня он работает, как и ожидалось.
Рейтинг:0
флаг ph

Использовать Drupal\rest\ModifiedResourceResponse вместо ResourceResponse, то он не будет кэшироваться.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.