[Laravel]短縮URLを作成する(laravel-short-url)

Laravel Laravel

前回コミットマージしてもらった、Laravelで短縮URLを作成する
laravel-short-urlライブラリについて書いています。

導入する

インストールする

composer requireコマンドで、ライブラリを取ってきます。

composer require gallib/laravel-short-url

マイグレーションする

このライブラリは新しくテーブルを作成して、
テーブルにURLと短縮コードを登録して、短縮URLを管理します。

なので、composer requireでライブラリ導入後にmigrationしてテーブルを作成します。

php artisan migrate

データベースに shorturl_urlsというテーブルが追加されます。

ルーティングの設定

短縮URLの作成やアクセスしてもらうURLルートを新規に作ります。

Route::group(['prefix' => 'short_url'], function(){
    (new GallibShortUrlShortUrl)->routes();
});

php artisan route:listコマンドを実行すると短縮URL用のパスが追加されているのが確認できます。

Method URI Action
GET short_url GallibShortUrlHttpControllersUrlController@create
POST short_url GallibShortUrlHttpControllersUrlController@store
GET short_url/list GallibShortUrlHttpControllersUrlController@index
GET short_url/{code} GallibShortUrlHttpControllersRedirectController@redirect
PUT short_url/{id} GallibShortUrlHttpControllersUrlController@update
DELETE short_url/{id} GallibShortUrlHttpControllersUrlController@destroy
GET short_url/{id}/edit GallibShortUrlHttpControllersUrlController@edit

短縮URL作成

ページから追加する

ライブラリのURLを登録して短縮するページを使って、短縮してみます。

http://127.0.0.1:8000/short_url(アプリの短縮URL indexページ)にアクセスすると
下記のような画面が表示されて、

urlを入れて登録すると、テーブルに追加されます。

url code
http://127.0.0.1:8000/hogehoge X2EOB5a

フォームから追加する

laravelでformを作って、urlをpost(UrlController@store)すると短縮URLを作ってくれます。

test_laravel_short_url.blade.php という名前で、POST用のフォームを作成しました!

<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>route test</title>
    </head>
    <body>
        <form method="post" action="{{route('shorturl.url.store')}}">
            @csrf
            <input type="text" size="40" name="url" />
            <button>submit</button>
        </form>
    </body>
</html>

web.phpにルーティングを追加します。

Route::get('/short_url_form', function() { return view('test_laravel_short_url'); });

フォームにURLを入力して登録してみました。

urlに入力されたurl、
codeには自動作成されたコードが
titleにはページのタイトルが入る
ようです!

url code title
https://www.google.com/search?q=laravel-short-url&aaaabbbbbccccc mVUPYi laravel-short-url – Google 検索

アクセスしてみる

http://127.0.0.1:8000/short_url/mVUPYi

にアクセスすると

https://www.google.com/search?q=laravel-short-url&aaaabbbbbccccc

にリダイレクトされることが確認できます。

まとめ

簡単に短縮URLを実装することができました。
こちらに今回のサンプルを置いています。

このライブラリがやっていることとしては、
・短縮URLの作成・リダイレクト処理などをするURLルートを追加する
・POSTした時にURLを6桁のランダムなコードと一緒に登録する
・コードでURLを検索して、リダイレクトする。
といったことをやっています。

URLを別の画面などで登録したい時はModelを作って、登録すると良さそうですね。

コメント

タイトルとURLをコピーしました