keal / laravel-output
Laravel 标准输出用于 RESTful API
v0.1.2
2017-03-10 08:46 UTC
Requires
- php: >=5.6.4
- illuminate/support: >=5.2
- league/fractal: >=0.12.0
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~5.7
README
安装
建议使用 Laravel >= 5.1.* , PHP >= 5.6
composer require keal/laravel-output
使用
注册 ServiceProvider
在 app.php 中加入 Caikeal\Output\Provider\OutputServiceProvider::class
引入错误处理
需要在 Exceptions/Handler.php 中引入 Caikeal\Output\Exceptions\HandlerTrait 方法,然后在改写下 render 方法,如下:
public function render($request, Exception $exception)
{
if ($request->expectsJson()) {
return $this->handlerApi($exception);
}
return parent::render($request, $exception);
}
引入返回值基类
在所有 Controller 的基类中引入该方法,如下:
protected function response()
{
return app('output.response');
}
返回方法
在返回时可以用该方法代替 response 返回:$this->response() 的方法 所有方法如下:
-
正确值返回:
- 模型层,且带有 transformer 验证的单列数据:
$this->response()->item([Model], [Transformer]); - 模型层,且带有 transformer 验证的多列数据:
$this->response()->collection([Model], [Transformer]); - 模型层,且带有 transformer 验证的分页数据:
$this->response()->paginator([Model], [Transformer]); - 任意:
$this->response()->array([Model/Array]);
返回值样式:
{ "data": { "name": "keal" }, "meta": { "type": "seller" } } - 模型层,且带有 transformer 验证的单列数据:
-
错误值返回:
- 404 错误:
$this->response()->errorNotFound([$message], [$code]) - 400 错误:
$this->response()->errorBadRequest([$message], [$code]) - 403 错误:
$this->response()->errorForbidden([$message], [$code]) - 500 错误:
$this->response()->errorInternal([$message], [$code]) - 401 错误:
$this->response()->errorUnauthorized([$message], [$code]) - 405 错误:
$this->response()->errorMethodNotAllowed([$message], [$code]) - 任意错误:
$this->response()->error([$message], [$statusCode], [$code])
返回值样式:
{ "code": "401000", "status_code": "401", "message": "Wrong." } - 404 错误:
Transformer 数据格式转换
在所有 Transformer 类中必须继承 League\Fractal\TransformerAbstract,使用如下:
namespace App\Transformers;
use App\User;
use League\Fractal\TransformerAbstract;
class UserTransformer extends TransformerAbstract
{
public function transform(User $data){
return [
'id'=>intval($data['id']),
'name'=>ucfirst($data['name'])
];
}
}
Artsian 创建 Transformer 类
创建 Transformer:php artisan make:transformer User
附带 Model 名:php artisan make:transformer User -m User
或者 php artisan make:transformer User --model=User
或者 php artisan make:transformer User --model=Model/User 带位置,命令会自动转化成空间名,并在开头添加 App
感谢
主要借鉴和引用了 Dingo/api 和 league/fractal