À l'aide de ce tutoriel, la drupal gprr
commande de la console Drupal , j'ai créé une ressource REST personnalisée dans Drupal 8. Je peux utiliser cette ressource pour récupérer un simple objet JSON qui dit bonjour à l'utilisateur actuel en faisant un GET sur:
http://localhost/example/hello?_format=json
Le JSON retourné ressemble alors à ceci:
{ "hello": "tyler" }
Cela doit être prévu, car je suis connecté. Mais lorsque je me déconnecte et que je fais un autre GET sur la ressource, le même résultat est renvoyé :
{ "hello": "tyler" }
La suppression d'un cache Drupal complet résout ce problème, mais je voudrais spécifiquement désactiver la mise en cache sur cette ressource. Comment puis je faire ça?
Comme solution de contournement, j'ai pensé que l'ajout d'un horodatage à la chaîne de requête fonctionnerait:
http://localhost/example/hello?_format=json&time=123456789
Mais cela renvoie également exactement le même résultat , quelle que soit la valeur d'horodatage dans la chaîne de requête.
Par souci de concision, voici le code squelette pour la construction de la ressource 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()
));
}
}
Existe-t-il une configuration / un paramètre que je dois définir sur ce plugin pour désactiver la mise en cache des requêtes GET?
\Drupal
dans des endroits où vous pouvez injecter le service, ce qui, en fonction de votre code commenté, ressemble à ce que vous pouvez faire ici.