41 \
Magento\Framework\Webapi\Rest\
Response\RendererFactory $rendererFactory,
45 $this->_renderer = $rendererFactory->get();
46 $this->_errorProcessor = $errorProcessor;
47 $this->_appState = $appState;
59 $this->_renderMessages();
61 parent::sendResponse();
74 $this->_errorProcessor->renderException($e, $httpCode);
83 protected function _renderMessages()
85 $responseHttpCode =
null;
88 $maskedException = $this->_errorProcessor->maskException($exception);
90 'message' => $maskedException->getMessage(),
92 if ($maskedException->getErrors()) {
93 $messageData[
'errors'] = [];
94 foreach ($maskedException->getErrors() as $errorMessage) {
95 $errorData[
'message'] = $errorMessage->getRawMessage();
96 $errorData[
'parameters'] = $errorMessage->getParameters();
97 $messageData[
'errors'][] = $errorData;
100 if ($maskedException->getCode()) {
101 $messageData[
'code'] = $maskedException->getCode();
103 if ($maskedException->getDetails()) {
104 $messageData[
'parameters'] = $maskedException->getDetails();
107 $messageData[
'trace'] = $exception instanceof \Magento\Framework\Webapi\Exception
108 ? $exception->getStackTrace()
109 : $exception->getTraceAsString();
111 $responseHttpCode = $maskedException->getHttpCode();
115 $this->
setMimeType($this->_renderer->getMimeType());
116 $this->
setBody($this->_renderer->render($messageData));
143 $mimeType = $this->_renderer->getMimeType();
144 $body = $this->_renderer->render(
$data);
156 $this->exceptions[] = $e;
167 return !empty($this->exceptions);
188 foreach ($this->exceptions as $e) {
189 if ($e instanceof
$type) {
const HTTP_NOT_ACCEPTABLE
__construct(\Magento\Framework\Webapi\Rest\Response\RendererFactory $rendererFactory, \Magento\Framework\Webapi\ErrorProcessor $errorProcessor, \Magento\Framework\App\State $appState)
const HTTP_INTERNAL_ERROR
hasExceptionOfType($type)
setHttpResponseCode($code)
prepareResponse($outputData=null)