Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

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にアクセスする方法 オブジェクト。

次に、saveread メソッド。

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クライアント。

より多くの人が学ぶことができるように、この記事を友達と共有することを忘れないでください。


  1. Rubyでパーサーを構築する方法

    構文解析は、一連の文字列を理解し、それらを理解できるものに変換する技術です。正規表現を使用することもできますが、必ずしもその仕事に適しているとは限りません。 たとえば、HTMLを正規表現で解析することはおそらく良い考えではないことは一般的な知識です。 Rubyには、この作業を実行できるnokogiriがありますが、独自のパーサーを作成することで多くのことを学ぶことができます。始めましょう! Rubyでの解析 パーサーの中核はStringScannerです クラス。 このクラスは、文字列のコピーと位置ポインタを保持します。ポインタを使用すると、特定のトークンを検索するために文字列をトラバ

  2. 独自のローカルプレミアムURL短縮サービスを作成する方法

    インターネット上で非常に長いURL(Uniform Resource Locator)に遭遇するでしょう。多くのサイトは、あなたの訪問に関する情報をURLに入れています:言語、場所、識別、スペシャルの参照コード、および他の多くのアイテム。これにより、URLが非常に長くなります。 CodeCanyonのプレミアムURL短縮サービス プレミアムURL短縮サービス コードキャニオン 長いURLを短くする方法です。このチュートリアルでは、システムに独自のURL短縮サービスを設定する方法とその使用方法を説明します。 URL短縮サービスとは何ですか? インターネットを閲覧するときは常にURLを使