Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

สร้างแอปย่อลิงค์ของคุณเองด้วย Ruby &Sinatra

หากคุณกำลังมองหาโครงการเล็กๆ เพื่อฝึกฝนและฝึกฝนทักษะ 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

นี่คือแอป Sinatra แบบง่ายๆ ที่มีการดำเนินการ 3 อย่าง หรือกำหนดเส้นทางหากต้องการ

เราสามารถเยี่ยมชมแอปพลิเคชันของเราและเราจะได้รับข้อความ "ส่งคำขอ POST"

เราจะทำอย่างนั้นได้อย่างไร

คุณสามารถใช้ปลั๊กอินของเบราว์เซอร์เช่นบุรุษไปรษณีย์ได้

แต่ฉันชอบใช้ curl เพื่อสิ่งนี้

เป็นเครื่องมือที่มีประโยชน์ซึ่งคุณควรติดตั้งในระบบปฏิบัติการใด ๆ และจะช่วยให้คุณโต้ตอบกับแอป Sinatra ของคุณได้

การส่งคำขอ POST

หากคุณกำลังติดตามคุณควรให้แอป Sinatra ของคุณทำงาน &curl ติดตั้งบนเครื่องของคุณ

ตอนนี้คุณสามารถส่งคำขอ POST ดังนี้:

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

สิ่งนี้ควรพิมพ์ข้อความ “เพิ่ม URL ใหม่” บนเทอร์มินัลของคุณ

เยี่ยมมาก!

ขั้นตอนต่อไปคือการแมป URL นี้กับ URL ที่สั้นลง

มาดูกันว่าเราจะทำได้อย่างไร

การทำแผนที่ URL

สำหรับการทำแผนที่ คุณสามารถทำได้โดยใช้สตริงสุ่ม ใช้ฟังก์ชันแฮช หรือใช้การเข้ารหัสบางประเภท

นี่เป็นวิธีหนึ่งที่จะทำได้:

LETTERS = Array('a'..'z')

def generate_short_url
  Array.new(6) { LETTERS.sample }.join
end

ในกรณีนี้ ฉันจะใช้สตริงสุ่ม 6 อักขระ

ดูวิดีโอหากคุณต้องการดูวิธีอื่นในการทำ

ซึ่งจะทำให้เรามี “รหัสย่อ” ที่เราจะใช้เพื่อจับคู่ URL ดั้งเดิมกับ URL แบบสั้น

จะเป็นอย่างไรต่อไป

เราจำเป็นต้องบันทึกรหัสนี้ไว้ที่ใดที่หนึ่งเพื่อที่เราจะได้เปลี่ยนเส้นทางผู้ใช้ไปยังตำแหน่งที่เหมาะสมได้

ฐานข้อมูล “NoSQL” ของเรา

สำหรับโครงการนี้ ฉันแค่ต้องการใช้ฐานข้อมูลอย่างง่าย

และอะไรจะง่ายกว่าแค่ใช้ไฟล์ใช่ไหม

ไลบรารีมาตรฐานของ Ruby มีคลาส PSstore นี้ซึ่งจะช่วยเราจัดการข้อมูล

เหมาะสำหรับแอปพลิเคชันขนาดเล็กเช่นของเรา

นี่คือรหัส :

class ShortURL
  def self.save(code, original)
    store.transaction { |t| t
 =ต้นฉบับ } สิ้นสุด def self.read (รหัส) store.transaction { |t| t
 } end def self.store @store ||=PStore.new("short_urls.db") สิ้นสุด

มีบางอย่างเกิดขึ้นที่นี่

อันดับแรก เรามี store . นี้ วิธีการเข้าถึง PStore . ของเรา วัตถุ

จากนั้นเราก็มี save &read วิธีการ

คุณจะสังเกตเห็นว่า PStore ทำตัวเหมือนแฮช ด้วยความแตกต่างที่ทุกการดำเนินการจำเป็นต้องเกิดขึ้นภายในบล็อกธุรกรรม

ตอนนี้ เราสามารถอัปเดตแอป Sinatra ของเราเพื่อใช้ 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

เท่านั้นแหละ!

ขณะนี้เรามีตัวย่อลิงก์ที่ใช้งานได้

เคล็ดลับแบบมือโปร:คุณสามารถใช้อัญมณีปืนลูกซองเพื่อโหลดแอป Sinatra ใหม่โดยอัตโนมัติเมื่อคุณทำการเปลี่ยนแปลงโค้ด

ยังมีงานให้ทำอีก เช่น เพิ่มฟอร์มจะได้ไม่ต้องใช้ curl เพื่อส่ง URL ใหม่

แสดงข้อความบางส่วนหาก URL ไม่อยู่ในฐานข้อมูล

และกำลังตรวจสอบรายการซ้ำ ดังนั้นเราจึงไม่เขียนทับ URL อื่น

ฉันจะปล่อยให้มันเป็นการบ้านให้คุณ 🙂

สรุป

คุณได้เรียนรู้วิธีสร้างแอปพลิเคชัน Link Shortener โดยใช้ Ruby, Sinatra &PStore! คุณยังได้เรียนรู้วิธีส่งคำขอ POST โดยใช้ curl ไคลเอนต์ http

อย่าลืมแชร์บทความนี้กับเพื่อน ๆ เพื่อให้คนอื่นได้เรียนรู้