muhamed-didovic / shortener
为Laravel和Vue.js SPA应用提供的URL缩短器
Requires
- php: ^7.1.3
- illuminate/contracts: ^5.5|^6.0|^7.0
- illuminate/support: ^5.5|^6.0|^7.0
- illuminate/validation: ^5.5|^6.0|^7.0
Requires (Dev)
- codedungeon/phpunit-result-printer: ^0.26
- mockery/mockery: ^1.0
- orchestra/testbench: ^3.5|^3.6|^3.7|^3.8|^4.0|^5.0
- phpunit/phpunit: ^6.5|^7.0|^8.0|^9.0
- squizlabs/php_codesniffer: ^3.5
README
这个Laravel包允许您缩短URL,同时附带前端部分,该部分是用vue.js和vuex实现的。您可以发布所有文件,如:视图、配置、迁移。对于前端,您可以发布js和css文件,并相应地进行调整。
基本文档
安装
Laravel Shortener需要PHP 7.1-7.4。这个特定的版本仅支持Laravel 5.5-5.8、6和7。
要获取最新版本,只需使用Composer引入项目。
通过Composer
$ composer require muhamed-didovic/shortener
安装后,如果您没有使用自动包发现(Laravel 5.4及以下版本),则需要将MuhamedDidovic\Shortener\ShortenerServiceProvider服务提供者在您的config/app.php中注册,如下所示
'providers' => [ ... MuhamedDidovic\Shortener\ShortenerServiceProvider::class, ]
您还可以选择性地为我们的外观别名
'aliases' => [ ... 'Shortener' => MuhamedDidovic\Shortener\Facades\Shortener::class, ]
使用和下一步
安装包后,您需要运行以下命令才能使其工作,之后我会提供有关配置和使用的更多信息。
第一步,运行负责将js和css发布到resources和public文件夹的命令。
php artisan vendor:publish --provider="MuhamedDidovic\Shortener\ShortenerServiceProvider" --tag="shortener::assets"
第二步,迁移数据库并获取('links')表(这可以在('shortener.php')配置文件中更改),其中将存储URL。
php artisan migrate
第三步,检查您的('.env')文件,并检查('APP_URL')选项,这默认用于缩短的URL,您也可以在('shortener.php')配置文件中更改或覆盖它。
第四步,为了同时提供视图文件和Vue.js,您需要一个路由,默认路由是('{any?}'),因此只需输入您路由中不存在的任何URL即可。
配置
Laravel Shortener包支持可选配置。
您可以使用以下命令发布迁移
php artisan vendor:publish --provider="MuhamedDidovic\Shortener\ShortenerServiceProvider" --tag="shortener::migrations"
迁移发布后,您可以通过运行迁移来创建media-table
php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="MuhamedDidovic\Shortener\ShortenerServiceProvider" --tag="shortener::config"
这是已发布的配置文件的内容
return [ /* * Name of table where the links or the URLs should be stored */ 'table' => 'links', /* * Url that should be used with the shortened string */ 'url' => env('APP_URL', 'https://'), /* * Routes used in the package */ 'routes' => [ /* * Route used to store url with post request */ 'post_short_route' => 'short', /* * Route to get shortend url with get request */ 'get_short_route' => 'short', /* * Route to get status of url provided with get request */ 'get_stats_route' => 'stats', /* * Route to serve Vue instance */ 'vue_route' => '{any?}', ] ];
前端配置
第一步
首先需要发布前端文件(js、css和视图)
php artisan vendor:publish --provider="MuhamedDidovic\Shortener\ShortenerServiceProvider" --tag="shortener::views" php artisan vendor:publish --provider="MuhamedDidovic\Shortener\ShortenerServiceProvider" --tag="shortener::assets"
上面的第一个命令用于视图文件,它将放置在resources/views/vendor/文件夹中,名称为shortener.blade.php
它应该像这样
第二个命令是将js和css发布到resources和public文件夹。
当我们更改resources文件夹中的js或css文件时,需要这样做,这些文件将被捆绑并放置在public文件夹中
resources文件夹中的js和css文件应该像这样
从resources文件夹生成的捆绑文件将被放置在public文件夹中
第二步
需要在package.json文件中安装npm依赖项
npm install vue-template-compiler@2.6.10 clipboard@1.6.1 pluralize@4.0.0 vue@2.2.6 vue-axios@2.1.4 vue-router@2.3.1 vuex@2.3.1 --save-dev
第三步
需要在webpack.mix.js中添加文件到捆绑
mix.js('resources/js/shortener.js', 'public/js/shortener.js') .sass('resources/sass/shortener.scss', 'public/css/shortener.css');
第四步
运行laravel mix,您可以在package.json的scripts部分查看命令,例如
npm run dev
或监视器
npm run watch
可用路由及其说明
该包包含4个路由(您不需要将它们包含在您的路由中)
Route::group( [ 'namespace' => 'MuhamedDidovic\Shortener\Controllers', 'middleware' => 'MuhamedDidovic\Shortener\Middleware\ModifiesUrlRequestData', ], function () { //save url Route::post(config('shortener.routes.post_short_route'), 'LinkController@store'); //get url Route::get(config('shortener.routes.get_short_route'), 'LinkController@show'); //get stats Route::get(config('shortener.routes.get_stats_route'), 'LinkStatsController@show'); //ROUTE for vue Route::get(config('shortener.routes.vue_route'), 'SinglePageController@show')->where('any', '.*'); } );
所有端点都存储在shortener.php配置文件中。前三个路由是基于API的,并返回JSON结果。
web.php中的前两个路由具有('short')默认端点选项,第一个用于存储和缩短URL,第二个用于通过我们提供的代码检索URL。第三个路由具有('stats')默认端点选项,用于获取特定URL的统计数据。
最后一个第四个路由('{any?}')是默认端点选项,用于Vue.js显示视图。
变更日志
有关最近更改的详细信息,请参阅变更日志。
测试
$ composer test
贡献
安全
如果您发现任何与安全相关的问题,请通过电子邮件muhamed.didovic@gmail.com而不是使用问题跟踪器。
致谢
许可协议
MIT许可协议(MIT)。有关更多信息,请参阅许可文件。



