使用JsonView

时间:2017-02-27 09:14:35

标签: typo3 extbase typo3-7.6.x

对于基于extbase的TYPO3 CMS扩展,我创建了一个带有JsonView作为视图对象的ApiController。返回值的工作方式类似于魅力,设置了正确的标题Content-type: application/json

要返回其他响应,例如缺少授权消息或验证错误,我目前使用:

$data = ["errors" => [
    "status" => 401,
    "message" => "Missing access token"
]];
$this->throwStatus($status, null, json_encode($data));

当我使用$this->throwStatus()时,标头Content-type: text/html已设置。即使我在使用header("Content-type: application/json");之前手动设置了$this->throwStatus()

如何使用正确的内容类型标题创建回复?

1 个答案:

答案 0 :(得分:3)

在抛出状态之前,尝试在响应对象中设置标题:

$this->response->setHeader('Content-Type', 'application/json', true);
$this->response->sendHeaders();

如果您通过专用的pageType访问数据,可以在TypoScript中设置此pageType的标题:

myPageType.config.additionalHeaders {
   10 {
      header = Content-Type: application/json
      replace = 1
   }
}

我会将此添加到我关于该主题的帖子中:https://usetypo3.com/json-view.html