यह दस्तावेज़ AI द्वारा अनुवादित किया गया है। किसी भी अशुद्धि के लिए, कृपया अंग्रेजी संस्करण देखें
NocoBase Server का मिडिलवेयर (Middleware) मूल रूप से Koa मिडिलवेयर ही है। आप Koa की तरह ही ctx ऑब्जेक्ट का उपयोग करके अनुरोधों और प्रतिक्रियाओं को संभाल सकते हैं। लेकिन, क्योंकि NocoBase को विभिन्न व्यावसायिक स्तरों के लॉजिक को प्रबंधित करने की आवश्यकता होती है, यदि सभी मिडिलवेयर को एक साथ रखा जाए, तो उन्हें बनाए रखना और प्रबंधित करना बहुत मुश्किल हो जाएगा।
इसी कारण, NocoBase ने मिडिलवेयर को चार स्तरों में विभाजित किया है:
डेटा स्रोत स्तर मिडिलवेयर: app.dataSourceManager.use()
यह केवल किसी विशिष्ट डेटा स्रोत के अनुरोधों पर लागू होता है। इसका उपयोग आमतौर पर उस डेटा स्रोत के लिए डेटाबेस कनेक्शन, फ़ील्ड सत्यापन या लेनदेन (transaction) प्रोसेसिंग जैसे लॉजिक के लिए किया जाता है।
संसाधन स्तर मिडिलवेयर: app.resourceManager.use()
यह केवल परिभाषित संसाधनों (Resource) के लिए प्रभावी होता है, और डेटा अनुमतियों (permissions), फ़ॉर्मेटिंग आदि जैसे संसाधन-स्तर के लॉजिक को संभालने के लिए उपयुक्त है।
अनुमति स्तर मिडिलवेयर: app.acl.use()
यह अनुमति जाँच से पहले निष्पादित होता है, और उपयोगकर्ता की अनुमतियों या भूमिकाओं को सत्यापित करने के लिए उपयोग किया जाता है।
एप्लिकेशन स्तर मिडिलवेयर: app.use()
यह हर अनुरोध के लिए निष्पादित होता है, और लॉगिंग, सामान्य त्रुटि प्रबंधन (error handling), प्रतिक्रिया (response) प्रबंधन आदि के लिए उपयुक्त है।
मिडिलवेयर आमतौर पर प्लगइन के load मेथड में पंजीकृत किए जाते हैं, उदाहरण के लिए:
मिडिलवेयर के निष्पादन का क्रम इस प्रकार है:
acl.use() द्वारा जोड़े गए अनुमति मिडिलवेयर निष्पादित होते हैं।resourceManager.use() द्वारा जोड़े गए संसाधन मिडिलवेयर निष्पादित होते हैं।dataSourceManager.use() द्वारा जोड़े गए डेटा स्रोत मिडिलवेयर निष्पादित होते हैं।app.use() द्वारा जोड़े गए एप्लिकेशन मिडिलवेयर निष्पादित होते हैं।मिडिलवेयर के क्रम को अधिक लचीले ढंग से नियंत्रित करने के लिए, NocoBase before, after और tag पैरामीटर प्रदान करता है:
उदाहरण:
यदि कोई स्थिति निर्दिष्ट नहीं की जाती है, तो नए जोड़े गए मिडिलवेयर का डिफ़ॉल्ट निष्पादन क्रम इस प्रकार होगा:
acl.use() -> resourceManager.use() -> dataSourceManager.use() -> app.use()
मिडिलवेयर का निष्पादन क्रम Koa के ओनियन मॉडल (Onion Model) का पालन करता है, जिसका अर्थ है कि यह पहले मिडिलवेयर स्टैक में प्रवेश करता है और अंत में बाहर निकलता है।
विभिन्न इंटरफेस तक पहुँचने पर, आउटपुट क्रम के उदाहरण:
सामान्य अनुरोध: /api/hello
आउटपुट: [1,2] (संसाधन परिभाषित नहीं है, resourceManager और acl मिडिलवेयर निष्पादित नहीं होते हैं)
संसाधन अनुरोध: /api/test:list
आउटपुट: [5,3,7,1,2,8,4,6]
मिडिलवेयर स्तर के क्रम और ओनियन मॉडल के अनुसार निष्पादित होते हैं।
before / after / tag का उपयोग कर सकते हैं।