RubyとSinatraを使用して独自のリンク短縮アプリを構築する
Rubyスキルに取り組み、実践するための小さなプロジェクトを探しているなら、あなたは正しい場所にいます。
今日はあなたと一緒に「リンク短縮」アプリケーションを作りたいと思います。
リンク短縮サービスとは何ですか?
きっと前に見たことがあると思います…
これらの「短いリンク」は次のようなものです:
https://t.co/eKBRm2tTUF
このURLにアクセスすると、元のURLにリダイレクトされます。
しかし、それはどのように機能しますか?
アイデアは、このコードeKBRm2tTUF
をマップすることです。 この例では、データベースの元のURLに移動します。
これは単純な概念ですが、処理する必要のあることがいくつかあります。
いいね…
このコードをどのように生成しますか?完全なURLとどのように一致させますか?
それでは始めましょう!
最初のステップ
セットアップがまったく必要ないため、Sinatraを使用します。すぐに使用できます。
また、通常の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つのアクション、または必要に応じてルートを備えたシンプルなSinatraアプリです。
アプリケーションにアクセスすると、「POSTリクエストを送信してください」というメッセージが表示されます。
どうすればよいですか?
Postmanのようなブラウザプラグインを使用できます。
しかし、私はcurl
を使用するのが好きです この種のことのために。
これは、どのオペレーティングシステムにもインストールできる便利なツールであり、Sinatraアプリを操作できるようになります。
POSTリクエストの送信
フォローしている場合は、Sinatraアプリを実行してcurl
を実行する必要があります マシンにインストールされています。
これで、次のようなPOSTリクエストを送信できます:
curl localhost:4567 --data "url=rubyguides.com" -X POST
これにより、端末に「新しいURLが追加されました」というメッセージが表示されます。
すばらしい!
次のステップは、このURLをより短いURLにマップすることです。
それをどのように行うことができるか見てみましょう。
マッピングURL
マッピングには、ランダムな文字列、ハッシュ関数、または何らかのエンコーディングを使用して行うことができます。
これを行う1つの方法は次のとおりです。
LETTERS = Array('a'..'z') def generate_short_url Array.new(6) { LETTERS.sample }.join end
この場合、6文字のランダムな文字列を使用します。
別の方法をご覧になりたい場合は、ビデオをご覧ください。
これにより、元のURLを短縮URLにマッピングするために使用する「短縮コード」が得られます。
次は何ですか?
ユーザーを適切な場所にリダイレクトできるように、このコードをどこかに保存する必要があります。
当社の「NoSQL」データベース
このプロジェクトでは、単純なデータベースを使用したかっただけです。
そして、ファイルを使用するよりも簡単なことは何ですか?
Rubyの標準ライブラリには、データの管理に役立つこのPStoreクラスが含まれています。
これは、私たちのような小さなアプリケーションに最適です。
コードは次のとおりです :
class ShortURL def self.save(code, original) store.transaction { |t| t =元の}enddef self.read(code)store.transaction {| t | t } end def self.store @store || =PStore.new( "short_urls.db")endend
ここで起こっていることがいくつかあります。
まず、この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
以上です!
これで、機能するリンク短縮サービスができました。
上級者向けのヒント:コードに変更を加えたときに、ショットガンgemを使用してSinatraアプリを自動リロードできます。
curl
を使用する必要がないようにフォームを追加するなど、まだやるべきことがいくつかあります。 新しいURLを送信します。
URLがデータベースにない場合にメッセージを表示します。
そして重複をチェックする 、したがって、他のURLを上書きしません。
それらは宿題として残しておきます🙂
概要
Ruby、Sinatra、PStoreを使用してリンク短縮サービスアプリケーションを構築する方法を学びました。 curl
を使用してPOSTリクエストを送信する方法も学習しました httpクライアント。
より多くの人が学ぶことができるように、この記事を友達と共有することを忘れないでください。
-
Rubyでパーサーを構築する方法
構文解析は、一連の文字列を理解し、それらを理解できるものに変換する技術です。正規表現を使用することもできますが、必ずしもその仕事に適しているとは限りません。 たとえば、HTMLを正規表現で解析することはおそらく良い考えではないことは一般的な知識です。 Rubyには、この作業を実行できるnokogiriがありますが、独自のパーサーを作成することで多くのことを学ぶことができます。始めましょう! Rubyでの解析 パーサーの中核はStringScannerです クラス。 このクラスは、文字列のコピーと位置ポインタを保持します。ポインタを使用すると、特定のトークンを検索するために文字列をトラバ
-
独自のローカルプレミアムURL短縮サービスを作成する方法
インターネット上で非常に長いURL(Uniform Resource Locator)に遭遇するでしょう。多くのサイトは、あなたの訪問に関する情報をURLに入れています:言語、場所、識別、スペシャルの参照コード、および他の多くのアイテム。これにより、URLが非常に長くなります。 CodeCanyonのプレミアムURL短縮サービス プレミアムURL短縮サービス コードキャニオン 長いURLを短くする方法です。このチュートリアルでは、システムに独自のURL短縮サービスを設定する方法とその使用方法を説明します。 URL短縮サービスとは何ですか? インターネットを閲覧するときは常にURLを使