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.
Và 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.