इस ट्यूटोरियल Drupal कंसोल की 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()
));
}
}
क्या जीईटी अनुरोधों पर कैशिंग को अक्षम करने के लिए मुझे इस प्लगइन पर एक कॉन्फ़िगरेशन / सेटिंग की आवश्यकता है?
\Drupal
आपको उन जगहों पर उपयोग करने से भी बचना चाहिए जहां आप सेवा को इंजेक्ट कर सकते हैं, जो आपके टिप्पणी कोड के आधार पर लगता है कि आप यहां कर सकते हैं।