qeezer / api-responder
API响应器。
v1.0.10
2022-04-01 09:01 UTC
Requires
- php: ^7.2 || ^7.3 || ^7.4 || ^8
- ext-json: *
- symfony/http-foundation: ^4.3.4 || ^5.1 || ^6
This package is auto-updated.
Last update: 2024-09-29 06:14:35 UTC
README
快速构建PHP Web API响应。支持laravel/lumen框架。不支持hyperf。
安装
composer require qeezer/api-responder ^1.0
用法
use QeeZer\ApiResponder\ResponderFactory
<?php namespace App\Controllers; use QeeZer\ApiResponder\ResponderFactory; use Request; use App\Models\User; class IndexController { public function index(Request $request) { return ResponderFactory::responseSuccess(); } public function item(Request $request) { return ResponderFactory::responseItem(User::find(1)); } public function collection(Request $request) { return ResponderFactory::responseCollection(User::all()); } public function paginate(Request $request) { return ResponderFactory::responsePaginate(User::simplePaginate(10)); } public function data(Request $request) { return ResponderFactory::responseData([ 'is_can' => true, 'name' => 'Tom', ]); } public function collection(Request $request) { if (!$request->user()) { return ResponderFactory::responseUnauthorized(); } return ResponderFactory::responseItem($request->user()); } }
use QeeZer\ApiResponder\Responder
app/Controllers/BaseController.php
<?php namespace App\Controllers; use QeeZer\ApiResponder\Responder; use Request; class BaseController { use Responder; }
app/Controllers/IndexController.php
<?php namespace App\Controllers; use QeeZer\ApiResponder\Responder; use Request; class IndexController extends BaseController { public function index(Request $request) { return $this->responseSuccess(); } }
使用响应资源
app/Resources/UserResource.php
<?php namespace App\Resources; use QeeZer\ApiResponder\DefaultResource; class UserResource extends DefaultResource { public function toArray(): array { return [ 'id' => $this->data['id'], 'name' => $this->data['name'], 'phone' => $this->data['mobile'], ]; } }
app/Controllers/UserController.php
<?php namespace App\Controllers; use App\Models\User; use App\Resources\UserResource; use QeeZer\ApiResponder\Responder; use Request; class IndexController extends BaseController { public function detail(Request $request) { $data = $this->validata([ 'uid' => 'required|int' ], $request->all()); return $this->responseItem(User::find($data['uid']), UserResource::class); } }
响应列表
ResponderFactory::responseItem(); ResponderFactory::responseCollection(); ResponderFactory::responsePaginate(); ResponderFactory::responseData(); ResponderFactory::responseSuccess(); ResponderFactory::responseFail(); ResponderFactory::responseError(); ResponderFactory::responseUnauthorized(); ResponderFactory::responseCreated();
在laravel或lumen中
app/Exceptions/Handler.php
public function render($request, $exception) { // other return \QeeZer\ApiResponder\Helpers::laravelExceptionRender($request, $exception); }