ルーティングを一覧表示できる「pretty-routes」を試してみた
Laravelのライブラリで「pretty-routes」というのを発見しました。
ルーティングを簡易的な形で一覧表示できるらしいです。
laravelは標準で php artisan route:list
というコマンドでルーティング一覧表示できますが、それと何が違うのか?という比較もやってみましたので最後まで見ていただけると嬉しいです。
今回試してみるルーティング
今回試してみるルーティングはこちらです。
※laravel8系の書き方です。
<?php
use App\Http\Controllers\CommentController;
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;
// 通常のルーティング(ミドルウェアあり)
Route::middleware(['auth'])->group(function () {
Route::get('users', [UserController::class, 'index']);
Route::get('user/{id}', [UserController::class, 'show'])->where('id', '[0-9]+');
Route::post('user', [UserController::class, 'store']);
Route::patch('user', [UserController::class, 'update']);
});
// prefixあり(ミドルウェアあり)
Route::middleware(['auth:admin'])->prefix('admin')->group(function () {
Route::get('users', [UserController::class, 'index']);
Route::get('user/{id}', [UserController::class, 'show'])->where('id', '[0-9]+');
Route::post('user', [UserController::class, 'store']);
Route::patch('user', [UserController::class, 'update']);
});
// resourcesを使ってみる(ミドルウェアなし)
Route::resource('comment', CommentController::class);
pretty-routeをインストールする
今回使用する prtty-route
をインストールします。
composer require wulfheart/pretty_routes
pretty-routeを試してみる
コマンドで一覧表示することができます。
]$ php artisan route:pretty
POST admin/user ............................................................................................................. generated::NGHCHoTYhlum5Goj
PATCH admin/user ............................................................................................................. generated::7K3Xt9ROEsKywvit
GET|HEAD admin/user/{id} ........................................................................................................ generated::oej5Q9sV0j8L5gDe
GET|HEAD admin/users ............................................................................................................ generated::vDe86sdoq3BZYcWX
GET|HEAD comment .............................................................................................................................. comment.index
POST comment .............................................................................................................................. comment.store
GET|HEAD comment/create ...................................................................................................................... comment.create
GET|HEAD comment/{comment} ..................................................................................................................... comment.show
PUT|PATCH comment/{comment} ................................................................................................................... comment.update
DELETE comment/{comment} .................................................................................................................. comment.destroy
GET|HEAD comment/{comment}/edit ................................................................................................................ comment.edit
POST user ................................................................................................................... generated::77KcBYs1VeZnGsMn
PATCH user ................................................................................................................... generated::TYXOY38zemVM1xfa
GET|HEAD user/{id} .............................................................................................................. generated::HJdZJ5X85r27qbwo
GET|HEAD users .................................................................................................................. generated::xznkwh4ys7Yao3Rh
↑が見づらいかもしれないので一応スクショも貼っておきます。(スクショも見づらいかもしれない...)
php artisan route:listでも出力してみる
php artisan route:list
でも出力してみます。
+--------+-----------+------------------------+-----------------------------+------------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+------------------------+-----------------------------+------------------------------------------------+------------+
| | POST | admin/user | generated::NGHCHoTYhlum5Goj | App\Http\Controllers\UserController@store | web |
| | | | | | auth:admin |
| | PATCH | admin/user | generated::7K3Xt9ROEsKywvit | App\Http\Controllers\UserController@update | web |
| | | | | | auth:admin |
| | GET|HEAD | admin/user/{id} | generated::oej5Q9sV0j8L5gDe | App\Http\Controllers\UserController@show | web |
| | | | | | auth:admin |
| | GET|HEAD | admin/users | generated::vDe86sdoq3BZYcWX | App\Http\Controllers\UserController@index | web |
| | | | | | auth:admin |
| | GET|HEAD | comment | comment.index | App\Http\Controllers\CommentController@index | web |
| | POST | comment | comment.store | App\Http\Controllers\CommentController@store | web |
| | GET|HEAD | comment/create | comment.create | App\Http\Controllers\CommentController@create | web |
| | GET|HEAD | comment/{comment} | comment.show | App\Http\Controllers\CommentController@show | web |
| | PUT|PATCH | comment/{comment} | comment.update | App\Http\Controllers\CommentController@update | web |
| | DELETE | comment/{comment} | comment.destroy | App\Http\Controllers\CommentController@destroy | web |
| | GET|HEAD | comment/{comment}/edit | comment.edit | App\Http\Controllers\CommentController@edit | web |
| | POST | user | generated::77KcBYs1VeZnGsMn | App\Http\Controllers\UserController@store | web |
| | | | | | auth |
| | PATCH | user | generated::TYXOY38zemVM1xfa | App\Http\Controllers\UserController@update | web |
| | | | | | auth |
| | GET|HEAD | user/{id} | generated::HJdZJ5X85r27qbwo | App\Http\Controllers\UserController@show | web |
| | | | | | auth |
| | GET|HEAD | users | generated::xznkwh4ys7Yao3Rh | App\Http\Controllers\UserController@index | web |
| | | | | | auth |
+--------+-----------+------------------------+-----------------------------+------------------------------------------------+------------+
一応スクショも貼っておきます
pretty-routeとroute:listを比較してみる
今回試している pretty-routeと 標準で備わっている route:list
で異なる点がいくつかあります
比較1:route:listの方が情報量が多い
php artisan route:list
で出力される情報と pretty-route
で出力される情報が異なります。
出力情報 | route:list | pretty-route |
---|---|---|
Domain | ◯ | |
Method | ◯ | ◯ |
URI | ◯ | ◯ |
Name(ルート名) | ◯ | ◯ |
Action | ◯ | |
Middleware | ◯ |
DomainとかActionとかは別にいらないかなーと思ってたのでpretty-routeくらいに情報量はちょうどいい気がします。欲を言えばMiddlewareくらいはほしい。
比較2:pretty-routeの方が視覚的に優しい
比較するとこんな感じになります
route:listの方は文字が全部白ですが、pretty-routeの方は色鮮やかで素敵!!
っていうくらいです(笑)
比較3:言わずもがな、pretty-routeはインストールしないといけない
php artisan route:list
は標準装備なのに対して、 pretty-route
はライブラリなのでインストールする必要があります。わざわざライブラリを増やしてまですることか?っていうのは好みが分かれそうなところではあります。
おわりに
別に php artisan route:list
で事足りますが、色鮮やかな素敵な表示でルート一覧を表示したいとか、route:listだと情報量多いなーって方は pretty-routeをいれてもいいかもしれません。
(僕は php artisan route:list の方を使います(笑))
Discussion
pretty-route、綺麗に表示できるが嬉しいですね。
route:listにも -c, --compact というオプションがあって、
単に情報量を減らすだけなら、こちらも便利ですよ。
Actionは、相変わらず長いですが(笑