提供一系列工具幫助你輕鬆構建本身的可拓展的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' => 分鐘數