taylornetwork/laravel-api-resource

dev-master 2020-06-18 17:32 UTC

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);
	}
}