nevestul4o/network-controller

为laravel设置的基本API控制器集

v2.5.2 2024-09-09 10:47 UTC

README

使用以下

php artisan vendor:publish

命令来发布 NetworkController 配置。

  • 所有控制器都应扩展它。
  • 例如,如果我们需要将 EmployeeController\api\employee 端点链接,请将以下条目添加到 \routes 文件夹中的 api.php
    Route::resource('employee', EmployeeController::class);

BaseModel

  • 抽象类,不能单独使用
  • 所有模型都应该扩展它
  • 所有模型都需要放置在 \App\Http\Models\ 文件夹中
  • 理想情况下,一个模型应该有一个控制器,该控制器扩展 NetworkController

BaseUser

  • 抽象类,不能单独使用
  • 提供基本用户账户功能
  • 它必须由一个名为 User 的模型扩展,该模型放置在 \App\Http\Models\ 文件夹中

FileUploadController 和 ImageUploadController

\routes 文件夹中的 api.php 中添加以下代码

    use Nevestul4o\NetworkController\Controllers\ImagesController;
    use Nevestul4o\NetworkController\Controllers\UploadController;

    Route::get('images/{width}/{name}', [ImagesController::class, 'getImage'])->name('get-image');
    Route::post('upload', [UploadController::class, 'uploadSubmit']);

将以下配置添加到 .env 文件中

UPLOADS_PATH=../uploads/files
IMAGES_PATH=../uploads/images
IMAGES_RESIZED_PATH=../cache/images
IMAGES_SUPPORTED_SIZES=300,600,900
IMAGES_REMOVE_METADATA=TRUE

有一个命令允许删除所有调整大小的图像

php artisan network-controller:images-clear-cache

LoginController 和 ChangePasswordController

  • 预制的控制器类,提供基本的登录/注销和密码更改功能
  • 它们需要一个名为 User 的模型,该模型放置在 \App\Http\Models\ 文件夹中,并扩展 BaseUser
  • auth.php 中用户提供者的命名空间更改为 \App\Http\Models\User
  • 它们需要一个名为 UserTransformer 的转换器,该转换器放置在 App\Http\Models\Transformers\ 文件夹中
  • 函数可以自由覆盖
  • 可以通过定义以下路由在 api.php 中使用
    use Nevestul4o\NetworkController\Controllers\Auth\LoginController;
    use Nevestul4o\NetworkController\Controllers\Auth\ChangePasswordController;
    
    Route::post('login', [LoginController::class, 'login'])->name('login');
    Route::get('login', [LoginController::class, 'login'])->name('getCurrentUser');
    Route::post('logout', [LoginController::class, 'logout'])->name('logout');
    
    Route::post('change-password', [ChangePasswordController::class, 'changePassword'])->name('changePassword');
    Route::post('change-password-forced', [ChangePasswordController::class, 'changePasswordForced'])->name('changePasswordForced');
  • 警告 - 在 ChangePasswordController 中的函数 changePasswordForced 未受保护!它可以更改用户的密码,而无需当前密码。在定义API路由时请小心手动保护它,或者覆盖它!