protected function negotiateContentType($request, $response) { if (!empty($this->formatParam) && ($format = $request->get($this->formatParam)) !== null) { if (in_array($format, $this->formats)) { $response->format = $format; $response->acceptMimeType = null; $response->acceptParams = []; return; } else { throw new UnsupportedMediaTypeHttpException('The requested response format is not supported: ' . $format); } } $types = $request->getAcceptableContentTypes(); if (empty($types)) { $types['*/*'] = []; } foreach ($types as $type => $params) { if (isset($this->formats[$type])) { $response->format = $this->formats[$type]; $response->acceptMimeType = $type; $response->acceptParams = $params; return; } } if (isset($types['*/*'])) { // return the first format foreach ($this->formats as $type => $format) { $response->format = $this->formats[$type]; $response->acceptMimeType = $type; $response->acceptParams = []; return; } } throw new UnsupportedMediaTypeHttpException('None of your requested content types is supported.'); }