Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

रूबी और सिनाट्रा लिंक शॉर्टनर ऐप बनाएं - चरण-दर-चरण ट्यूटोरियल

यदि आप अपने रूबी कौशल का अभ्यास करने के लिए एक छोटी परियोजना ढूंढ रहे हैं तो आप सही जगह पर हैं।

आज मैं आपके साथ एक "लिंक शॉर्टनर" एप्लिकेशन बनाना चाहता हूँ।

लिंक शॉर्टनर क्या है?

मुझे यकीन है कि आपने उन्हें पहले देखा है…

ये "छोटे लिंक्स" जैसे:

 https://t.co/eKBRm2tTUF 

जब आप इस URL पर जाते हैं तो आपको मूल URL पर रीडायरेक्ट किया जाता है।

लेकिन यह कैसे काम करता है?

विचार यह है कि इस कोड को, उदाहरण में eKBRm2tTUF, हमारे डेटाबेस पर मूल URL से मैप किया जाए।

यह एक सरल अवधारणा है, लेकिन कुछ चीजें हैं जिन्हें हमें संभालने की आवश्यकता है।

जैसे…

यह कोड कैसे उत्पन्न करें? इसे पूर्ण URL से कैसे मिलान करें?

तो चलिए शुरू करते हैं!

पहले कदम

मैं इसके लिए सिनाट्रा का उपयोग करने जा रहा हूँ क्योंकि इसे किसी सेटअप की आवश्यकता नहीं है, इसलिए हम तुरंत शुरू कर सकते हैं।

और एक सामान्य SQL डेटाबेस के बजाय मैं भी कुछ अलग करने जा रहा हूँ।

पढ़ते रहें यह जानने के लिए कि वह क्या है 🙂

यहाँ प्रारंभिक कोड है:

 require 'sinatra' get '/:url' do "The URL is #{params[:url]}" end get '/' do "Send a POST request to register a new URL." end post '/' do "New URL added: #{params[:url]}\n" end 

यह 3 एक्शन्स, या रूट्स के साथ एक साधारण सिनाट्रा ऐप है यदि आप पसंद करते हैं।

हम अपने एप्लिकेशन पर जा सकते हैं और हमें "Send a POST request" संदेश मिलेगा।

हम ऐसा कैसे करते हैं?

आप Postman जैसे ब्राउज़र प्लगइन का उपयोग कर सकते हैं।

लेकिन मुझे इस तरह की चीज के लिए curl उपयोग करना पसंद है।

यह एक उपयोगी टूल है जिसे आप किसी भी ऑपरेटिंग सिस्टम में इंस्टॉल कर सकते हैं और यह आपको अपने सिनाट्रा ऐप के साथ बातचीत करने की अनुमति देगा।

POST रिक्वेस्ट भेजना

यदि आप साथ चल रहे हैं तो आपके पास अपना सिनाट्रा ऐप चल रहा होना चाहिए और curl आपकी मशीन पर इंस्टॉल होना चाहिए।

अब आप इस तरह एक POST रिक्वेस्ट भेज सकते हैं:

 curl localhost:4567 --data "url=rubyguides.com" -X POST 

यह आपके टर्मिनल पर "New URL added" संदेश प्रिंट करना चाहिए।

बढ़िया!

अगला कदम इस URL को एक छोटे URL से मैप करना है।

आइए देखें कि हम ऐसा कैसे कर सकते हैं।

URLs मैप करना

मैपिंग के लिए आप एक रैंडम स्ट्रिंग, हैश फंक्शन या किसी प्रकार के एन्कोडिंग का उपयोग कर सकते हैं।

यहाँ एक तरीका है:

 LETTERS = Array('a'..'z') def generate_short_url Array.new(6) { LETTERS.sample }.join end 

इस मामले में मैं 6 वर्णों की एक रैंडम स्ट्रिंग के साथ जा रहा हूँ।

वीडियो देखें यदि आप इसे करने का दूसरा तरीका देखना चाहते हैं।

यह हमें "शॉर्ट कोड" देगा जिसका उपयोग हम मूल URL को छोटे URL से मैप करने के लिए करेंगे।

आगे क्या?

हमें इस कोड को कहीं सहेजने की आवश्यकता है ताकि हम उपयोगकर्ताओं को उचित स्थान पर रीडायरेक्ट कर सकें।

हमारा "NoSQL" डेटाबेस

इस परियोजना के लिए मैं सिर्फ एक साधारण डेटाबेस का उपयोग करना चाहता था।

और फाइलों का उपयोग करने से सरल क्या है, है ना?

रूबी की मानक पुस्तकालय में यह PStore क्लास शामिल है जो हमें डेटा प्रबंधित करने में मदद करेगा।

यह हमारे जैसे छोटे एप्लिकेशन के लिए बहुत अच्छा है।

यहाँ कोड है:

 class ShortURL def self.save(code, original) store.transaction { |t| t[code] = original } end def self.read(code) store.transaction { |t| t[code] } end def self.store @store ||= PStore.new("short_urls.db") end end 

यहाँ कुछ चीजें हो रही हैं।

पहला, हमारे पास इस store मेथड के माध्यम से हमारे PStore ऑब्जेक्ट तक पहुंच है।

फिर हमारे पास save और read मेथड्स हैं।

आप देखेंगे कि PStore एक हैश की तरह व्यवहार करता है। अंतर यह है कि हर ऑपरेशन को एक ट्रांजैक्शन ब्लॉक के अंदर होने की आवश्यकता होती है।

अब हम अपने सिनाट्रा ऐप को ShortURL क्लास का उपयोग करने के लिए अपडेट कर सकते हैं:

 require 'sinatra' get '/:url' do redirect "https://" + ShortURL.read(params[:url]) end get '/' do "Send a POST request to register a new URL." end post '/' do ShortURL.save(generate_short_url, params[:url]) "New URL added: localhost:4567/#{generate_short_url}\n" end 

और बस!

अब हमारे पास एक कार्यशील लिंक शॉर्टनर है।

प्रो टिप: आप अपने कोड में परिवर्तन करते समय अपने सिनाट्रा ऐप को ऑटो-रिलोड करने के लिए shotgun gem का उपयोग कर सकते हैं।

अभी भी कुछ काम करना बाकी है, जैसे एक फॉर्म जोड़ना ताकि हमें नया URL सबमिट करने के लिए curl का उपयोग न करना पड़े।

यदि URL डेटाबेस में नहीं है तो कुछ संदेश दिखाना।

और डुप्लिकेट की जांच करना, ताकि हम अन्य URLs को ओवरराइट न करें।

मैं इन्हें आपके लिए होमवर्क के रूप में छोड़ दूंगा 🙂

सारांश

आपने सीखा कि रूबी, सिनाट्रा और PStore का उपयोग करके लिंक शॉर्टनर एप्लिकेशन कैसे बनाएं! आपने यह भी सीखा कि curl HTTP क्लाइंट का उपयोग करके POST रिक्वेस्ट कैसे भेजें।

इस लेख को अपने दोस्तों के साथ शेयर करना न भूलें ताकि अधिक लोग सीख सकें।

  1. शक्तिशाली रूबी CLI टूल्स बनाएं: चरण-दर-चरण गाइड शक्तिशाली रूबी CLI टूल्स बनाएं: चरण-दर-चरण गाइड

    बहुत से लोग भूल जाते हैं कि रूबी वेब एप्लिकेशन के अलावा भी चीजें कर सकता है। इस लेख में, मैं आपको दिखाना चाहता हूं कि इस कमी को दूर करने के लिए कमांड-लाइन एप्लिकेशन कैसे बनाया जाए! यहाँ कुछ कमांड-लाइन एप्लिकेशन हैं जिनसे आप परिचित हो सकते हैं: psql rails bundler gem git कमांड-लाइन एप्लिकेशन बनाने

  1. रूबी पार्सिंग में मास्टर करें: स्क्रैच से अपना खुद का पार्सर बनाएं रूबी पार्सिंग में मास्टर करें: स्क्रैच से अपना खुद का पार्सर बनाएं

    पार्सिंग स्ट्रिंग्स के एक समूह को समझने और उन्हें किसी ऐसी चीज़ में बदलने की कला है जिसे हम समझ सकें। आप रेगुलर एक्सप्रेशन्स का उपयोग कर सकते हैं, लेकिन वे हमेशा इस काम के लिए उपयुक्त नहीं होते। उदाहरण के लिए, यह सामान्य ज्ञान है कि HTML को रेगुलर एक्सप्रेशन्स से पार्स करना शायद एक अच्छा विचार नहीं

  1. एक विश्वसनीय लोकल URL शॉर्टनर सर्विस बनाएं - चरण-दर-चरण गाइड एक विश्वसनीय लोकल URL शॉर्टनर सर्विस बनाएं - चरण-दर-चरण गाइड

    आप इंटरनेट पर कुछ बहुत लंबे URL (यूनिफॉर्म रिसोर्स लोकेटर्स) का सामना करेंगे। कई साइट्स आपकी विजिट के बारे में जानकारी को URL में डालती हैं: भाषा, स्थान, पहचान, विशेष के लिए रेफरेंस कोड, और कई अन्य आइटम्स जैसे। ये बहुत लंबे URL बनाता है। कोडकैन्यन पर प्रीमियम URL शॉर्टनर कोड कैन्यन पर प्रीमियम