रैक (वेब ​​सर्वर इंटरफ़ेस)

रैक रूबी प्रोग्रामिंग भाषा में विकसित वेब सर्वर और वेब अनुप्रयोगों के बीच एक मॉड्यूलर इंटरफ़ेस है। रैक के साथ, वेब ढाँचा  और  मध्यस्थ  के लिए अप्लिकेशन प्रोग्रामिंग अंतरफलक (एपीआई) हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल#अनुरोध संदेश और हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल#रिस्पॉन्स संदेश को संभालने वाली एकल विधि (कंप्यूटर प्रोग्रामिंग) में आवरण समारोह हैं।

रैक का उपयोग कई रूबी वेब फ्रेमवर्क और लाइब्रेरी (कंप्यूटिंग) द्वारा किया जाता है, जैसे रूबी ऑन रेल्स और सिनात्रा (सॉफ्टवेयर)। यह रूबी रूबीजेम्स के रूप में उपलब्ध है। कई रूबी अनुप्रयोगों को रैक-अनुपालक कहा जाता है। रैक ने जावास्क्रिप्ट ढांचे में समान ढांचे को प्रेरित किया है (जैक.जेएस), क्लोजर, पर्ल (प्लैक (सॉफ़्टवेयर)), सामान्य लिस्प  (क्लैक), और .NET फ्रेमवर्क|.NET (.NET के लिए वेब इंटरफ़ेस खोलें)।

अवलोकन
रैक एप्लिकेशन की विशेषता यह है कि एप्लिकेशन ऑब्जेक्ट कॉल विधि पर प्रतिक्रिया करता है। कॉल विधि पर्यावरण ऑब्जेक्ट को तर्क के रूप में लेती है और रैक प्रतिक्रिया ऑब्जेक्ट लौटाती है।

पर्यावरण
कॉल विधि द्वारा तर्क के रूप में लिया गया वातावरण उस ऑब्जेक्ट को संदर्भित करता है जिसमें: है क) HTTP अनुरोध पर जानकारी

इसमें ऐसी जानकारी शामिल है:
 * हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल#अनुरोध विधियां/
 * यूआरएल जानकारी (ऐसी जानकारी जो एप्लिकेशन को निर्देशित करेगी, वह जानकारी जो एप्लिकेशन में वास्तविक स्थान को निर्देशित करेगी, क्वेरी स्ट्रिंग)
 * सर्वर जानकारी जैसे सर्वर नाम और सर्वर पोर्ट
 * HTTP मेटावेरिएबल्स जो क्लाइंट से प्राप्त होते हैं

बी) विशिष्ट जानकारी रखें

इसमें जैसी जानकारी शामिल है
 * रैक एप्लिकेशन का वह संस्करण जो चल रहा है
 * यूआरएल योजना का उपयोग किया जाता है, अर्थात, यदि प्राप्त अनुरोध http या https है।
 * कच्चा HTTP डेटा।
 * त्रुटियों की रिपोर्टिंग के लिए एक रूबी ऑब्जेक्ट।
 * जानकारी जैसे कि क्या एप्लिकेशन ऑब्जेक्ट को एक साथ किसी अन्य थ्रेड या प्रक्रिया से बुलाया गया है।
 * सर्वर अपेक्षाओं और क्षमताओं (कनेक्शन अपहरण के लिए सर्वर की क्षमता) पर जानकारी।

यदि एप्लिकेशन को मिडलवेयर के रूप में उपयोग किया जा रहा है, तो पर्यावरण में ऑब्जेक्ट्स हो सकते हैं जो सत्र जानकारी, लॉगिंग क्षमताएं, डेटा के आकार पर जानकारी प्रदान करेंगे जिन्हें पढ़ने और लिखने आदि के लिए उपयोग किया जा सकता है। इनके अलावा, सर्वर कर सकता है पर्यावरण में अपना स्वयं का डेटा संग्रहीत करें।

रैक प्रतिक्रिया
रैक सर्वर ऑब्जेक्ट एक प्रतिक्रिया देता है जिसमें तीन भाग होते हैं: स्थिति, हेडर और बॉडी।
 * स्थिति में 200,404 जैसे HTTP स्थिति कोड शामिल हैं।
 * हेडर में प्रत्येक के लिए प्रतिक्रिया होती है और कुंजी-मूल्य जोड़े देता है। चाबियाँ तार वाली होनी चाहिए।
 * मुख्य भाग में अंतिम डेटा होता है जो सर्वर द्वारा अनुरोधकर्ता को भेजा जाता है।

Rack::Response रैक प्रतिक्रिया बनाने के लिए एक सुविधाजनक इंटरफ़ेस प्रदान करता है। वर्ग Rack::Response को lib/rack/response.rb में परिभाषित किया गया है। रिस्पांस क्लास का उपयोग करने के लिए, इसे मिडलवेयर लेयर से स्टैक के नीचे इंस्टेंट करें। इसका उपयोग कुकीज़ को संशोधित करने के लिए किया जा सकता है।

रैक में मिडलवेयर
रैक एप्लिकेशन और वेब सर्वर के बीच मिडलवेयर घटकों की एक श्रृंखला जोड़ना आसान बनाता है। रैक में एकाधिक मिडलवेयर घटकों का उपयोग किया जा सकता है जो अनुरोध/प्रतिक्रिया को अगले घटक को सौंपने से पहले संशोधित करता है। इसे मिडलवेयर स्टैक कहा जाता है।

रैक सर्वर सभी विवरणों के साथ अपवाद दिखाने जैसी कार्यात्मकताओं के लिए डिफ़ॉल्ट रूप से कई मध्य मिडलवेयर जोड़ता है, रैक विशिष्टता के अनुसार अनुरोध और प्रतिक्रियाओं को मान्य करना वगैरह।

उदाहरण आवेदन
रूबी (प्रोग्रामिंग भाषा) सिंटैक्स में एक रैक-संगत हैलो वर्ल्ड एप्लिकेशन: उपरोक्त कोड के लिए सर्वर को रैकअप helloWorld.ru का उपयोग करके शुरू किया जा सकता है और इसे http://localhost:9292/ पर एक्सेस किया जा सकता है। रैक एप्लिकेशन द्वारा उपयोग किया जाने वाला डिफ़ॉल्ट पोर्ट 9292 है।

यह भी देखें

 * Wsgi
 * पीएसजीआई
 * जेएसजे
 * पायथन पेस्ट
 * समुद्रतट (सॉफ्टवेयर)
 * फास्टसीजीआई
 * जावा सर्वलेट
 * सर्वर-साइड जावास्क्रिप्ट
 * अपाचे JServ प्रोटोकॉल
 * इंटरनेट संचार इंजन
 * खोदना (प्रोटोकॉल)
 * आईएसएपीआई इंटरनेट सर्वर एप्लीकेशन प्रोग्रामिंग इंटरफ़ेस (माइक्रोसॉफ्ट)