hemend / laravel-api
基于服务、版本和方法生成API
v4.3.2
2024-08-25 11:00 UTC
Requires
- php: >=8.1
- hemend/php-library: ^1.3.0
- laravel/passport: ^12.2.0
- propaganistas/laravel-phone: ^5.3.2
- spatie/laravel-permission: ^6.7.0
README
使用盾牌为您的packagist.org仓库显示项目从packagist.org下载的次数或最新稳定版本。
要求
必须删除以下路径列出的文件
- 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
项目文件变更
- 编辑
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);
- 编辑
config/auth.php
... 'defaults' => [ 'guard' => 'api', 'passwords' => 'users', ], ... 'guards' => [ ... 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ... ], ... 'providers' => [ ... 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\Users::class, ], ... ],
- 清空
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]
其他设置
- 安装包并执行以上操作后,需要发布并迁移到数据库
php artisan migrate php artisan passport:install php artisan db:seed --class=UsersSeeder
- 可追踪作业示例(路径: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