Laravel 创建 URL 缩短器

Laravel 创建 URL 缩短器

在这个部分,我们将要创建一个 URL 缩短器。我们将使用 Laravel 来完成这个任务。在我们的应用中,我们会生成缩短的 URL 字符串,而不是长的 URL。我们可以使用不同版本的 Laravel,比如 Laravel 6、Laravel 7 和 Laravel 8 来编写我们的脚本函数。

在使用短信或其他方式分享时,我们需要生成缩短的 URL,因为有字符限制。在我们的项目中,我们需要在分享任何链接或 URL 时生成短链接。在我们的应用中,生成短链接的需求会多次出现,所以我们需要在项目中实现一个模块,这个模块将帮助我们生成带有我们网站域名的缩短 URL 或短链接。下面是创建缩短 URL 或短链接的逐步过程,不使用任何包:

步骤1:

在这一步中,我们将安装 Laravel 5。如果我们的系统还没有安装全新的 Laravel 版本,我们可以使用以下命令来安装最新版本的 Laravel 5 应用,命令如下:

composer create-project --prefer-dist laravel/laravel blog

步骤2:

在这一步中,我们将 创建表格 。在这里,我们将使用刮痕应用程序创建短链接。为了创建名为”short_links”的表格,我们将使用迁移。为此,我们将使用以下命令:

php artisan make:migration create_short_links_table

当上述命令成功执行时,我们将打开名为”database/migrations”的文件路径,并在此路径中看到一个新文件。在我们的迁移文件中,我们将添加以下代码,以便能够创建一个short_links表。

?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateShortLinksTable extends Migration
{
    /**
     * It is used to run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('short_links', function (Blueprint table) {table->bigIncrements('id');
            table->string('code');table->string('link');
            $table->timestamps();
        });
    }

    /**
     * It is used to reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('short_links');
    }
}

以下命令将用于执行上述迁移:

php artisan migrate

步骤3:

在这一步中,我们将 创建模型 。在这里,我们将创建一个名为ShortLink的新模型。为了创建一个新模型,下面的命令非常有用:

php artisan make:model ShortLink

app/ShortLink.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class ShortLink extends Model
{
    /**
     * It is used to display the mass assignable attributes.
     *
     * It is used to show @var array
     */
    protected $fillable = [
        'code', 'link'
    ];
}

步骤4:

在这一步中,我们将进行 创建路由 的操作。在这里,我们将创建两条路由。一条路由用于布局文件,另一条路由用于存储数据。我们可以通过使用名为routes/web.php的文件来添加路由,如下所示:

routes/web.php

Route::get('generate-shorten-link', 'ShortLinkController@index');
Route::post('generate-shorten-link', 'ShortLinkController@store')->name('generate.shorten.link.post');

Route::get('{code}', 'ShortLinkController@shortenLink')->name('shorten.link');

步骤5:

在这一步中,我们将要 创建控制器 。在这里,我们将使用ShortLinkController作为一个新的控制器。使用这个控制器,我们可以管理布局,也可以在数据库中存储数据。现在我们将使用我们的控制器文件,并将以下代码添加到其中,就像这样:

app/Http/Controllers/ShortLinkController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\ShortLink;

class ShortLinkController extends Controller
{
    /**
     * It is used to show the resource list.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        shortLinks = ShortLink::latest()->get();

        return view('shortenLink', compact('shortLinks'));
    }

    /**
     * It is used to show the resource list.
     *
     * @return \Illuminate\Http\Response
     */
    public function store(Requestrequest)
    {
        request->validate([
           'link' => 'required|url'
        ]);input['link'] = request->link;input['code'] = str_random(6);

        ShortLink::create(input);

        return redirect('generate-shorten-link')
             ->with('success', 'Shorten Link Generated Successfully!');
    }

    /**
     * It is used to show the resource list.
     *
     * @return \Illuminate\Http\Response
     */
    public function shortenLink(code)
    {
        find = ShortLink::where('code',code)->first();

        return redirect($find->link);
    }
}

步骤6:

在这一步中,我们将 创建视图 。在这里,我们将为布局创建一个名为 shortenLink.blade.php 的文件。我们将把下面的代码添加到该文件中,就像这样:

resources/views/shortenLink.blade.php

<!DOCTYPE html>
<html>
<head>
    <title> Laravel - Create URL shortener </title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.min.css" />
</head>
<body>

<div class="container">
    <h1> Laravel - Create URL shortener </h1>

    <div class="card">
      <div class="card-header">
        <form method="POST" action="{{ route('generate.shorten.link.post') }}">
            @csrf
            <div class="input-group mb-3">
              <input type="text" name="link" class="form-control" placeholder="Enter URL" aria-label="Recipient's username" aria-describedby="basic-addon2">
              <div class="input-group-append">
                <button class="btn btn-success" type="submit">Generate Shorten Link</button>
              </div>
            </div>
        </form>
      </div>
      <div class="card-body">

            @if (Session::has('success'))
                <div class="alert alert-success">
                    <p>{{ Session::get('success') }}</p>
                </div>
            @endif

            <table class="table table-bordered table-sm">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Short Link</th>
                        <th>Link</th>
                    </tr>
                </thead>
                <tbody>
                    @foreach(shortLinks asrow)
                        <tr>
                            <td>{{ row->id }}</td>
                            <td><a href="{{ route('shorten.link',row->code) }}" target="_blank">{{ route('shorten.link', row->code) }}</a></td>
                            <td>{{row->link }}</td>
                        </tr>
                    @endforeach
                </tbody>
            </table>
      </div>
    </div>

</div>

</body>
</html>

现在我们的上述代码已经准备就绪。为了快速运行上述代码,我们将使用以下命令:

php artisan serve

现在我们可以使用浏览器打开下面的网址:

http://localhost:8000/generate-shorten-link

打开之后,我们可以看到以下输出:

Laravel 创建 URL 缩短器

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程