💬

ルーティングを一覧表示できる「pretty-routes」を試してみた

2021/05/28に公開1

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

nshironshiro

pretty-route、綺麗に表示できるが嬉しいですね。
route:listにも -c, --compact というオプションがあって、
単に情報量を減らすだけなら、こちらも便利ですよ。
Actionは、相変わらず長いですが(笑