การใช้คำสั่งของ Drupal Console บทช่วยสอนนี้drupal gprr
ฉันได้สร้างทรัพยากร REST แบบกำหนดเองใน Drupal 8 ฉันสามารถใช้ทรัพยากรนี้เพื่อดึงข้อมูลวัตถุ 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
ในสถานที่ที่คุณสามารถฉีดบริการซึ่งขึ้นอยู่กับรหัสความคิดเห็นของคุณดูเหมือนว่าคุณสามารถทำได้ที่นี่