taylornetwork / laravel-api-resource
dev-master
2020-06-18 17:32 UTC
Requires
- php: >=7.0
- illuminate/database: ^7.16
- illuminate/routing: ^7.16
- illuminate/support: ^7.16
This package is auto-updated.
Last update: 2024-09-19 02:57:09 UTC
README
此包提供了一个简单的方法来实现API资源控制器,而不必编写类似代码。如果您有多个通过API调用访问且没有复杂关系的模型,这将非常有用。
注意:此README仍在进行中
安装
使用Composer
$ composer require taylornetwork/laravel-api-resource
设置
使用此包的模型必须扩展 TaylorNetwork\LaravelApiResource\Models\ApiResourceModel,您的模型将继续正常工作,因为 ApiResourceModel 类扩展了Laravel的Eloquent模型类。
如果您的模型不在 App\ 命名空间中,请确保发布配置并更改 model_namespace 为您的命名空间。
使用
在创建与特定模型相关的新控制器时,您只需扩展 TaylorNetwork\LaravelApiResource\Controllers\ApiResourceController,这会处理Laravel的资源调用。
示例
例如,如果您有一个模型 App\Customer,您想通过API调用访问它。
模型
客户模型将有一个必需的 name 字段,我们可以将其添加到 $validationRules 属性中。
// app/Customer.php namespace App; use TaylorNetwork\LaravelApiResource\Models\ApiResourceModel; class Customer extends ApiResourceModel { protected $validationRules = [ 'name' => 'required', ]; protected $fillable = [ 'name', 'email', 'address', ]; }
路由
必须将路由添加到 routes/api.php
// routes/api.php Route::apiResource('customer', 'Api\\CustomerController');
控制器
这是处理API调用所需的所有代码,ApiResourceController 处理所有相关路由。
// app/Http/Controllers/Api/CustomerController.php namespace App\Http\Controllers\Api; use TaylorNetwork\LaravelApiResource\Controllers\ApiResourceController; class CustomerController extends ApiResourceController { }
如果您有特定路由的更复杂关系,您可以在控制器中覆盖它。
// app/Http/Controllers/Api/CustomerController.php namespace App\Http\Controllers\Api; use TaylorNetwork\LaravelApiResource\Controllers\ApiResourceController; use App\Customer; class CustomerController extends ApiResourceController { public function show($id) { return Customer::with('someRelation')->find($id); } }