使用本教程 Drupal Console的drupal gprr
命令,我已经在Drupal 8中创建了一个自定义REST资源。我能够使用此资源来检索一个简单的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
在可以注入服务的地方使用,这些地方基于注释掉的代码,看起来像您可以在此处进行。