/**
* Dispatch the request to the application and return either a regular response
* or an API response.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response|\Dingo\Api\Http\Response
* @throws \Exception
*/
public function dispatch(Request $request)
{
if (!$this->requestTargettingApi($request)) {
return parent::dispatch($request);
}
$this->container->instance('Illuminate\\Http\\Request', $request);
ApiResponse::getTransformer()->setRequest($request);
try {
$response = parent::dispatch($request);
} catch (Exception $exception) {
if ($request instanceof InternalRequest) {
throw $exception;
} else {
$response = $this->handleException($exception);
}
}
$this->container->forgetInstance('Illuminate\\Http\\Request');
return $response instanceof ApiResponse ? $response->morph($this->requestedFormat) : $response;
}