Sử dụng hướng dẫn nàydrupal gprr
Lệnh của Drupal Console , tôi đã tạo tài nguyên REST tùy chỉnh trong Drupal 8. Tôi có thể sử dụng tài nguyên này để truy xuất một đối tượng JSON đơn giản nói xin chào với người dùng hiện tại bằng cách thực hiện GET trên:
http://localhost/example/hello?_format=json
JSON được trả về sau đó trông như thế này:
{ "hello": "tyler" }
Điều này được mong đợi, khi tôi đăng nhập. Nhưng khi tôi đăng xuất và thực hiện một GET khác trên tài nguyên, kết quả tương tự được trả về :
{ "hello": "tyler" }
Việc xóa bộ nhớ cache Drupal đầy đủ sẽ khắc phục sự cố này, nhưng tôi muốn vô hiệu hóa cụ thể bộ đệm ẩn trên tài nguyên này. Làm thế nào tôi có thể làm điều đó?
Như một giải pháp thay thế, tôi nghĩ rằng việc thêm dấu thời gian vào chuỗi truy vấn sẽ hoạt động:
http://localhost/example/hello?_format=json&time=123456789
Nhưng điều đó cũng trả về kết quả chính xác tương tự , bất kể giá trị tem thời gian là gì trong chuỗi truy vấn.
Để cho ngắn gọn, đây là mã bộ xương để xây dựng tài nguyên 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ó cấu hình / cài đặt nào tôi cần đặt trên plugin này để tắt bộ đệm ẩn trên các yêu cầu GET không?
\Drupal
ở những nơi bạn có thể tiêm dịch vụ, dựa trên mã nhận xét của bạn, có vẻ như bạn có thể làm ở đây.