提供一系列工具帮助你轻松构建本身的可拓展的APIphp
composer require dingo/api:1.0.*@dev # 服务注册 - Lumen下: #在`bootstrap/app`中注册 $app->register(Dingo\Api\Provider\LumenServiceProvider::class); - Laravel下: #在`config/app.php`中注册 `Dingo\Api\Provider\LaravelServiceProvider::class` #发布配置 php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider" # Facad注册 - Dingo\Api\Facade\API - Dingo\Api\Facade\Route
x
未注册树 - 用于本地开发(建议值)prs
私有树 - 用于非商业交付项目vnd
第三方树 - 用于公开交付项目$router = app('Dingo\Api\Routing\Router'); $api->version('v1', function ($api) { $api->get(路径, 'MyController@MyAction'); $api->group(['middleware' => 'foo'], function ($api) { }); });
响应模式json
response > transformers > formatters > 输出
use Dingo\Api\Routing\Helpers;
$this->response
或者$this->response()
return $this->response->array($arrayData)
return $this->response->item($obj, $transfomrer)
return $this->response->collection($objs, $transfomrer)
return $this->response->paginator($paginatedObjs, $transfomrer)
return $this->response->noContent()
return $this->response->created([$uri])
return $this->response->error($msg, $statusCode)
return $this->response->errorNotFound([$msg])
return $this->response->errorBadRequest([$msg])
return $this->response->errorForbidden([$msg])
return $this->response->errorInternal([$msg])
return $this->response->errorUnauthorized([$msg])
$this->response->withHeader($name, $value)
$this->response->addMeta($name, $value)|setMeta([$name,=>$value])
$this->response->setStatusCode($statuCode)
响应变形bootstrap
ResponseIsMorphing、ResponseWasMorphed
并handle
响应默认使用Fractal Transfomer
api
调用模式缓存
app('Dingo\Api\Transformer\Factory')->register('‘MyModel, 'MyModelTransformer')
return $this->response->item($obj, $transfomrer)
内置支持的认证适配器app
HTTP Basic (Dingo\Api\Auth\Provider\Basic)
JSON Web Tokens (Dingo\Api\Auth\Provider\JWT)
OAuth 2.0 (Dingo\Api\Auth\Provider\OAuth2)
Accept: application/vnd.YOUR_SUBTYPE.v1+json
App('Dingo\Api\Http\RateLimit\Handler')->setRateLimiter(function ($app, $request) { return 惟一键名; });
'middleware' => 'api.throttle', 'limit' => 次数, 'expires' => 分钟数