यदि आप अपने रूबी कौशल पर काम करने और अभ्यास करने के लिए एक छोटी सी परियोजना की तलाश कर रहे हैं तो आप सही जगह पर हैं।
आज मैं आपके साथ एक "लिंक शॉर्टनर" एप्लिकेशन बनाना चाहता हूं।
लिंक शॉर्टनर क्या है?
मुझे यकीन है कि आपने उन्हें पहले देखा होगा...
ये "लघु कड़ियाँ" जैसे:
https://t.co/eKBRm2tTUF
जब आप इस यूआरएल पर जाते हैं तो आप मूल यूआरएल पर रीडायरेक्ट हो जाते हैं।
लेकिन यह कैसे काम करता है?
इस कोड को मैप करने का विचार है, eKBRm2tTUF
उदाहरण में, हमारे डेटाबेस के मूल 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 क्रियाओं या मार्गों के साथ यह एक साधारण सिनात्रा ऐप है।
हम अपने आवेदन पर जा सकते हैं और हमें "एक पोस्ट अनुरोध भेजें" संदेश प्राप्त होगा।
हम यह कैसे करते हैं?
आप पोस्टमैन जैसे ब्राउज़र प्लग इन का उपयोग कर सकते हैं।
लेकिन मुझे curl
का उपयोग करना पसंद है इस तरह की चीज़ के लिए।
यह एक आसान टूल है जिसे आपको किसी भी ऑपरेटिंग सिस्टम में इंस्टॉल करने में सक्षम होना चाहिए और यह आपको अपने सिनात्रा ऐप के साथ इंटरैक्ट करने की अनुमति देगा।
पोस्ट अनुरोध भेजना
यदि आप अनुसरण कर रहे हैं तो आपको अपना सिनात्रा ऐप चलाना चाहिए और curl
आपकी मशीन पर स्थापित।
अब आप इस तरह एक POST अनुरोध भेज सकते हैं:
curl localhost:4567 --data "url=rubyguides.com" -X POST
यह आपके टर्मिनल पर "नया यूआरएल जोड़ा गया" संदेश प्रिंट करना चाहिए।
बढ़िया!
अगला कदम इस यूआरएल को एक छोटे यूआरएल में मैप करना है।
आइए देखें कि हम यह कैसे कर सकते हैं।
यूआरएल मैप करना
मैपिंग के लिए आप इसे यादृच्छिक स्ट्रिंग का उपयोग करके, हैश फ़ंक्शन का उपयोग करके या किसी प्रकार के एन्कोडिंग का उपयोग करके कर सकते हैं।
इसे करने का एक तरीका यह है:
LETTERS = Array('a'..'z') def generate_short_url Array.new(6) { LETTERS.sample }.join end
इस मामले में मैं 6 वर्णों की एक यादृच्छिक स्ट्रिंग के साथ जा रहा हूँ।
अगर आप इसे करने का दूसरा तरीका देखना चाहते हैं तो वीडियो देखें।
यह हमें "लघु कोड" देगा जिसका उपयोग हम मूल URL को संक्षिप्त URL में मैप करने के लिए करने जा रहे हैं।
आगे क्या है?
हमें इस कोड को कहीं सहेजना होगा ताकि हम उपयोगकर्ताओं को उचित स्थान पर पुनर्निर्देशित कर सकें।
हमारा "NoSQL" डेटाबेस
इस परियोजना के लिए मैं बस एक साधारण डेटाबेस का उपयोग करना चाहता था।
और केवल फाइलों का उपयोग करने से आसान क्या है, है ना?
रूबी की मानक लाइब्रेरी में यह पीस्टोर क्लास शामिल है जो डेटा को प्रबंधित करने में हमारी मदद करेगी।
यह हमारे जैसे छोटे एप्लिकेशन के लिए बहुत अच्छा है।
यह रहा कोड :
class ShortURL def self.save(code, original) store.transaction { |t| t =मूल} अंत डीईएफ़ सेल्फ.रीड (कोड) store.transaction { |t| टी } अंत def self.store @store ||=PStore.new("short_urls.db") endend
यहाँ कुछ चीज़ें चल रही हैं।
सबसे पहले, हमारे पास यह 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
और बस!
अब हमारे पास एक वर्किंग लिंक शॉर्टनर है।
<ब्लॉकक्वॉट>प्रो टिप:जब आप अपने कोड में बदलाव करते हैं, तो आप अपने सिनात्रा ऐप को ऑटो-रीलोड करने के लिए शॉटगन रत्न का उपयोग कर सकते हैं।
अभी भी कुछ काम करना बाकी है, जैसे एक फॉर्म जोड़ना ताकि हमें curl
का उपयोग न करना पड़े एक नया URL सबमिट करने के लिए।
यदि URL डेटाबेस में नहीं है तो कुछ संदेश दिखा रहा है।
और डुप्लिकेट की जांच कर रहा है , इसलिए हम अन्य URL को अधिलेखित नहीं करते हैं।
मैं उन्हें आपके लिए होमवर्क के रूप में छोड़ दूंगा 🙂
सारांश
आपने रूबी, सिनात्रा और पीस्टोर का उपयोग करके लिंक शॉर्टनर एप्लिकेशन बनाना सीखा! आपने curl
. का उपयोग करके POST अनुरोध भेजने का तरीका भी सीखा एचटीटीपी क्लाइंट.
इस लेख को अपने दोस्तों के साथ साझा करना न भूलें ताकि अधिक लोग सीख सकें।