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

रैक रूबी क्रमादेशन लैंग्वेज में विकसित वेब सर्वर और वेब अनुप्रयोगों के मध्य एक मॉड्यूलर अंतरापृष्ठ है। रैक के साथ, वेब फ्रेमवर्क और मिड्लवेयर के लिए अनुप्रयोग क्रमादेशन अंतरापृष्ठ (एपीआई) को HTTP अनुरोधों और प्रतिक्रियाओं को संभालने वाली एकल विधि कॉल में रैप करते हैं।

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

रैक ने जावास्क्रिप्ट (जैक.जेएस), क्लोजर, पर्ल (प्लैक), सामान्य लिस्प (क्लैक), और .NET (ओविन) में समान फ्रेमवर्क को प्रेरित किया है।

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

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

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

b) विशिष्ट जानकारी रैक करें

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

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

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

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

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

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

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

यह भी देखें

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