对于基于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()
。
如何使用正确的内容类型标题创建回复?
答案 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