Computer >> Máy Tính >  >> Lập trình >> Ruby

Xây dựng ứng dụng rút gọn liên kết của riêng bạn với Ruby &Sinatra

Nếu bạn đang tìm kiếm một dự án nhỏ để làm việc &thực hành các kỹ năng Ruby của mình thì bạn đã đến đúng chỗ.

Hôm nay, tôi muốn cùng bạn xây dựng ứng dụng “trình rút gọn liên kết”.

Công cụ rút gọn liên kết là gì?

Tôi chắc rằng bạn đã từng nhìn thấy chúng trước đây…

Những “liên kết ngắn” này như:

https://t.co/eKBRm2tTUF

Khi bạn truy cập URL này, bạn sẽ được chuyển hướng đến URL ban đầu.

Nhưng điều đó hoạt động như thế nào?

Ý tưởng là ánh xạ mã này, eKBRm2tTUF trong ví dụ, tới URL gốc trên cơ sở dữ liệu của chúng tôi.

Đó là một khái niệm đơn giản, nhưng có một số điều chúng tôi cần xử lý.

Như…

Làm thế nào để sản xuất mã này? Làm cách nào để bạn khớp nó với URL đầy đủ?

Vì vậy, hãy bắt đầu!

Các bước đầu tiên

Tôi sẽ sử dụng Sinatra cho việc này vì nó không yêu cầu thiết lập gì cả, vì vậy chúng ta có thể bắt đầu ngay lập tức.

Và thay vì một cơ sở dữ liệu SQL điển hình, tôi cũng sẽ làm một cái gì đó khác.

Hãy tiếp tục đọc để tìm hiểu đó là gì 🙂

Đây là mã ban đầu :

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

Đây là một ứng dụng Sinatra đơn giản với 3 hành động hoặc các tuyến đường nếu bạn thích.

Chúng tôi có thể truy cập ứng dụng của mình và chúng tôi sẽ nhận được thông báo "Gửi yêu cầu ĐĂNG".

Làm cách nào để chúng tôi thực hiện điều đó?

Bạn có thể sử dụng một plugin trình duyệt như Postman.

Nhưng tôi thích sử dụng curl cho loại điều này.

Đây là một công cụ hữu ích mà bạn có thể cài đặt trong bất kỳ Hệ điều hành nào và nó sẽ cho phép bạn tương tác với ứng dụng Sinatra của mình.

Gửi yêu cầu ĐĂNG

Nếu bạn đang theo dõi, bạn phải chạy ứng dụng Sinatra &curl được cài đặt trên máy của bạn.

Bây giờ bạn có thể gửi một yêu cầu ĐĂNG như thế này:

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

Thao tác này sẽ in ra thông báo “Đã thêm URL mới” trên thiết bị đầu cuối của bạn.

Tuyệt vời!

Bước tiếp theo là ánh xạ URL này thành một URL ngắn hơn.

Hãy xem chúng ta có thể làm điều đó như thế nào.

Ánh xạ URL

Đối với ánh xạ, bạn có thể thực hiện bằng cách sử dụng một chuỗi ngẫu nhiên, sử dụng hàm băm hoặc sử dụng một số loại mã hóa.

Đây là một cách để làm điều đó:

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

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

Trong trường hợp này, tôi chọn một chuỗi ngẫu nhiên gồm 6 ký tự.

Hãy xem video nếu bạn muốn biết một cách khác để làm điều đó.

Điều này sẽ cung cấp cho chúng tôi "mã ngắn" mà chúng tôi sẽ sử dụng để ánh xạ URL ban đầu với URL ngắn.

Tiếp theo là gì?

Chúng tôi cần lưu mã này ở đâu đó để có thể chuyển hướng người dùng đến nơi thích hợp.

Cơ sở dữ liệu “NoSQL” của chúng tôi

Đối với dự án này, tôi chỉ muốn sử dụng một cơ sở dữ liệu đơn giản.

Và điều gì đơn giản hơn là chỉ sử dụng tệp, phải không?

Thư viện tiêu chuẩn của Ruby bao gồm lớp PStore này sẽ giúp chúng tôi quản lý dữ liệu.

Điều này rất tốt cho một ứng dụng nhỏ như của chúng tôi.

Đây là mã :

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

Có một số điều đang diễn ra ở đây.

Đầu tiên, chúng tôi có store này phương pháp để truy cập PStore của chúng tôi đối tượng.

Sau đó, chúng tôi có save &read phương pháp.

Bạn sẽ nhận thấy rằng PStore hoạt động như một hàm băm. Với sự khác biệt mà mọi hoạt động cần phải diễn ra bên trong một khối giao dịch.

Giờ đây, chúng tôi có thể cập nhật ứng dụng Sinatra của mình để sử dụng ShortURL lớp:

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

Và đó là nó!

Hiện chúng tôi có một trình rút gọn liên kết đang hoạt động.

Mẹo chuyên nghiệp:Bạn có thể sử dụng viên ngọc shotgun để tự động tải lại ứng dụng Sinatra của mình khi bạn thực hiện các thay đổi trong mã của mình.

Vẫn còn một số việc phải làm, chẳng hạn như thêm biểu mẫu để chúng tôi không phải sử dụng curl để gửi một URL mới.

Hiển thị một số thông báo nếu URL không có trong cơ sở dữ liệu.

kiểm tra các bản sao , vì vậy chúng tôi không ghi đè các URL khác.

Tôi sẽ để chúng làm bài tập về nhà cho bạn 🙂

Tóm tắt

Bạn đã học cách xây dựng ứng dụng Link Shortener bằng Ruby, Sinatra &PStore! Bạn cũng đã học cách gửi yêu cầu ĐĂNG bằng curl ứng dụng khách http.

Đừng quên chia sẻ bài viết này đến bạn bè của bạn để nhiều người cùng học hỏi.