hemend/laravel-api

基于服务、版本和方法生成API

v4.3.2 2024-08-25 11:00 UTC

This package is auto-updated.

Last update: 2024-09-25 11:13:38 UTC


README

使用盾牌为您的packagist.org仓库显示项目从packagist.org下载的次数或最新稳定版本。

Latest Stable Version Total Downloads Latest Unstable Version License PHP Version Require

要求

必须删除以下路径列出的文件

- app/Models/User.php
- database/migrations/2014_10_12_000000_create_users_table.php
- database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php

发布命令

在本节中,您需要将包中的所需文件复制到本地路径。如果执行以下命令,则不需要使用后续命令

php artisan vendor:publish --provider="Hemend\Api\ApiServiceProvider" --tag=api
php artisan vendor:publish --provider="Hemend\Library\Laravel\Providers\LibraryServiceProvider" --tag=config
复制配置

php artisan vendor:publish --provider="Hemend\Api\ApiServiceProvider" --tag=config

复制迁移

php artisan vendor:publish --provider="Hemend\Api\ApiServiceProvider" --tag=migrations

复制种子

php artisan vendor:publish --provider="Hemend\Api\ApiServiceProvider" --tag=seeders

复制模型

php artisan vendor:publish --provider="Hemend\Api\ApiServiceProvider" --tag=models

项目文件变更

  1. 编辑 public/index.php
$app = require_once __DIR__.'/../bootstrap/app.php';

// set the public path to this directory
$app->bind('path.public', function() {
    return __DIR__;
});

$kernel = $app->make(Kernel::class);
  1. 编辑 config/auth.php
    ...
    'defaults' => [
        'guard' => 'api',
        'passwords' => 'users',
    ],
    ...
    'guards' => [
    ...
        'api' => [
            'driver' => 'passport',
            'provider' => 'users',
        ],
    ...
    ],
    ...
    'providers' => [
    ...
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\Users::class,
        ],
    ...
    ],
  1. 清空 routes/api.php 文件的全部内容,并粘贴以下代码
function callApiRoute($route_name) {
    Route::any('/{service}/{version}/{endpoint}', 'Api')->where([
        'service' => '[a-z][a-zA-Z0-9]+',
        'version' => '[1-9][0-9]{0,1}',
        'endpoint' => '([a-z][a-zA-Z0-9]+(\/?[a-z][a-zA-Z0-9]+){0,6})'
    ])->name($route_name);
}

Route::group(['namespace' => 'Hemend\Api\Controllers\\'], function ($router) {
    callApiRoute('Api');

//    Route::group(['prefix' => 'demo'], function ($router) {
//        callApiRoute('DemoApi');
//    });
});

API命令

关键词含义

创建具有默认端点的服务

php artisan make:api-basic [Service] [Version] --mode=[Mode] --guard=[Guard]

创建特定端点(如果没有服务和版本,则创建)

php artisan make:api-maker [Service] [Version] [Package] [Endpoint] --flag=[Flag]

创建特定端点(如果没有服务和版本,将返回错误)

php artisan make:api-endpoint [Service] [Version] [Package] [Endpoint] --flag=[Flag]

创建服务

php artisan make:api-service [Service]

为服务创建版本

php artisan make:api-version [Service] [Version]

其他设置

  1. 安装包并执行以上操作后,需要发布并迁移到数据库
php artisan migrate
php artisan passport:install
php artisan db:seed --class=UsersSeeder
  1. 可追踪作业示例(路径:app/Jobs/TrackableTest.php)
<?php

namespace App\Jobs;

use Hemend\Api\Interfaces\TrackableJob;
use Hemend\Api\Traits\TrackableQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class TrackableTest implements ShouldQueue, TrackableJob
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, TrackableQueue;

    /**
     * Create a new job instance.
     */
    public function __construct()
    {
        $this->prepareTracker();
    }

    /**
     * Execute the job.
     */
    public function handle(): void
    {
        $max = mt_rand(5, 30);
        $this->setProgressMax($max);

        for ($i = 0; $i <= $max; $i += 1) {
            sleep(1); // Some Long Operations
            $this->setProgressNow($i);
        }

        $this->setOutput(['total' => $max, 'other' => 'parameter']);
    }
}

用法

<?php

use App\Jobs\TrackableTest;

TrackableTest::dispatch();

许可

本软件基于MIT许可证发布,请参阅LICENSE