Використовуючи цей підручник Drupal консоль drupal gprr
команди, я створив ресурс користувальницької REST в Drupal 8. Я можу використовувати цей ресурс , щоб отримати простий об'єкт JSON , який говорить привіт до активного користувача, роблячи GET на:
http://localhost/example/hello?_format=json
Потім повернувся JSON виглядає приблизно так:
{ "hello": "tyler" }
Цього слід очікувати, коли я входив у систему. Але коли я виходжу та виконую інший GET на ресурсі, той самий результат повертається :
{ "hello": "tyler" }
Виконання повного кеша Drupal чітко виправляє цю проблему, але я хотів би спеціально відключити кешування на цьому ресурсі. Як я можу це зробити?
Як вирішення, я думав, що додавання позначки часу до рядка запиту спрацює:
http://localhost/example/hello?_format=json&time=123456789
Але це також повертає точно такий же результат , незалежно від того, яке значення часової позначки знаходиться в рядку запиту.
Для стислості, ось код скелета для створення ресурсу GET:
class ExampleHello extends ResourceBase {
/**
* {@inheritdoc}
*/
public static function create(/* ... */) {
return new static(/* ... */);
}
/**
* Constructs a Drupal\rest\Plugin\ResourceBase object.
*/
public function __construct(/* ... */) {
parent::__construct(/* ... */);
// ...
}
/*
* Responds to GET requests.
*/
public function get() {
$account = \Drupal::currentUser()->getAccount();
if (!$account->id()) {
return new ResourceResponse(array(
'welcome' => 'visitor'
));
}
return new ResourceResponse(array(
'hello' => $account->getAccountName()
));
}
}
Чи потрібно налаштувати / налаштувати цей плагін, щоб відключити кешування на GET-запитах?
\Drupal
в місцях, де ви можете ввести послугу, яка, виходячи з коментованого коду, виглядає так, як ви можете тут.