Utilizzando questo tutorial del drupal gprr
comando Drupal Console , ho creato una risorsa REST personalizzata in Drupal 8. Sono in grado di utilizzare questa risorsa per recuperare un semplice oggetto JSON che saluta l'utente corrente facendo un GET su:
http://localhost/example/hello?_format=json
Il JSON restituito è quindi simile al seguente:
{ "hello": "tyler" }
Questo è prevedibile, poiché ho effettuato l'accesso. Ma quando eseguo il logout e eseguo un altro GET sulla risorsa, viene restituito lo stesso risultato :
{ "hello": "tyler" }
Fare una cache Drupal completa risolve questo problema, ma mi piacerebbe disabilitare specificamente la memorizzazione nella cache su questa risorsa. Come posso fare ciò?
Per ovviare al problema, ho pensato che l'aggiunta di un timestamp alla stringa di query avrebbe funzionato:
http://localhost/example/hello?_format=json&time=123456789
Ma questo restituisce anche lo stesso esatto risultato , indipendentemente dal valore del timestamp nella stringa della query.
Per brevità, ecco il codice scheletro per la creazione della risorsa 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()
));
}
}
C'è una configurazione / impostazione che devo impostare su questo plugin per disabilitare la memorizzazione nella cache delle richieste GET?
\Drupal
in luoghi in cui puoi iniettare il servizio, che in base al tuo codice commentato, sembra che puoi fare qui.