Menggunakan tutorial ini drupal gprr
perintah Konsol Drupal , saya telah membuat sumber daya REST khusus di Drupal 8. Saya dapat menggunakan sumber daya ini untuk mengambil objek JSON sederhana yang menyapa pengguna saat ini dengan melakukan GET pada:
http://localhost/example/hello?_format=json
JSON yang dikembalikan kemudian terlihat seperti ini:
{ "hello": "tyler" }
Ini diharapkan, saat saya masuk. Tetapi ketika saya keluar, dan melakukan GET lain pada sumber daya, hasil yang sama dikembalikan :
{ "hello": "tyler" }
Melakukan cache Drupal penuh menghapus masalah ini, tapi saya ingin secara khusus menonaktifkan caching pada sumber ini. Bagaimana saya bisa melakukan itu?
Sebagai solusinya, saya pikir menambahkan cap waktu ke string kueri akan berfungsi:
http://localhost/example/hello?_format=json&time=123456789
Tapi itu juga mengembalikan hasil yang sama persis , tidak peduli berapa nilai stempel waktu dalam string kueri.
Untuk singkatnya, inilah kode kerangka untuk membangun sumber daya 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()
));
}
}
Apakah ada konfigurasi / pengaturan yang perlu saya atur di plugin ini untuk menonaktifkan caching pada permintaan GET?
\Drupal
di tempat-tempat di mana Anda dapat menyuntikkan layanan, yang berdasarkan pada kode komentar Anda, sepertinya dapat Anda lakukan di sini.Saya memiliki masalah yang sama.
Setelah membaca dokumentasi dan melihat-lihat halaman ini, saya dapat mematikan cache untuk titik akhir kustom saya. Berikut adalah contoh kode kerja saya di dalam fungsi get () untuk titik akhir saya:
Menambahkan ini untuk referensi di masa mendatang, harap ini membantu siapa saja yang membutuhkannya.
Halaman dokumentasi CacheableResponseTrait
sumber
drush cr
itu berfungsi setiap kali sesudahnya.Saya juga memiliki masalah yang sama dan solusi untuk itu adalah:
Anda juga dapat melihat dokumentasi CacheableMetadata dan konteks cache .
sumber