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

रूबी और सिनात्रा के साथ अपना खुद का लिंक शॉर्टनर ऐप बनाएं

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

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

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

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

ये "लघु कड़ियाँ" जैसे:

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 अनुरोध भेजने का तरीका भी सीखा एचटीटीपी क्लाइंट.

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


  1. रूबी के साथ कमांड-लाइन एप्लिकेशन (सीएलआई) कैसे बनाएं?

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

  1. रूबी के साथ एक पार्सर कैसे बनाएं

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

  1. अपनी खुद की स्थानीय प्रीमियम यूआरएल शॉर्टनर सेवा कैसे बनाएं

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