前回コミットマージしてもらった、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を作って、登録すると良さそうですね。
コメント