nailfor / shazam-api
快速API开发
v0.1.8
2024-09-06 14:25 UTC
Requires
- php: >=7.1.0
README
此库允许API开发者以极简的方式快速创建API。
特性
所有模型都继承自 Illuminate\Database\Eloquent\Model,因此大多数方法都是原生支持的。
安装
安装此扩展的首选方式是通过composer。
运行以下命令之一:
composer require nailfor/shazam-api
配置
添加 config/app.php
'providers' => [ ... nailfor\shazam\API\Providers\RouteServiceProvider::class, ];
config/shazam.php
<?php use nailfor\shazam\Http\Controllers\Controller; use nailfor\shazam\API\Models\Paginator; return [ 'namespace' => 'App', 'path' => 'Http/Controllers', 'routes' => [ //there is subdirectory of Http/Controllers for routing 'API', ], 'paginator' => Paginator::class, 'pages' => [ 'perPage' => 'per_page', 'page' => 'page', ], 'debug' => env('SQL_DEBUG', false), ];
用法
基本用法
仓库
- 在您的应用中创建目录 Repositories\API
- 添加 UserRepository.php 如下
<?php namespace App\Repositories\API; use App\Models\User; use nailfor\shazam\API\Repositories\APIRepository; class UserRepository extends APIRepository { protected static string $model = User::class; }
控制器
- 在 Http/Controllers 目录中创建子目录 API
- 添加 UserController.php 如下
<?php namespace App\Http\Controllers\API; use App\Repositories\API\UserRepository; use nailfor\shazam\API\Http\Controllers\ApiController; class UserController extends ApiController { public function __construct(UserRepository $model) { parent::__construct($model); } }
您可以使用以下方式为控制器指定规则:
class UserController extends ApiController { //By default can't store and destroy protected array $can = [ 'store', ]; //By default can index and show protected array $cant = [ 'index', 'show', ]; ... }
请求验证
- 在 Http/Requests 目录中创建子目录
- 添加请求文件,或者直接运行 ./artisan make:request StoreRequest
StoreRequest.php
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest { /** * Determine if the user is authorized to make this request. */ public function authorize(): bool { return true; } /** * Get the validation rules that apply to the request. * * @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string> */ public function rules(): array { return [ 'id' => 'required', ]; } public function messages(): array { return [ 'id.required' => 'Id is require', ]; } }
现在您可以像这样编辑控制器类
class UserController extends ApiController { protected static array $requests = [ 'store' => StoreRequest::class, ]; ... }
当 'store' 是Laravel CRUD操作之一(index, show, store, destroy)时
- 编辑 app\Http\Kernel.php,找到 "protected $middlewareGroups = [...]" 并添加到每个
\nailfor\shazam\API\Http\Middleware\RequestValidator::class,
之后,您可以进行如下请求:http::///api/user
鸣谢
许可证
GNU许可证(GNU)。请参阅许可证文件获取更多信息。