如何在Slim 3中设置JSON标头?
$app->get('/joinable', function ($request, $response, $args) {
header('Content-Type: application/json');
return getJoinable(); // Returns JSON_encoded data
});
Run Code Online (Sandbox Code Playgroud)
我尝试了以下内容
$response = $app->response();
$response['Content-Type'] = 'application/json';
$app->contentType('application/json');
从未使用过Slim框架,但根据他们的文档,它应该是以下内容:
$app->get('/joinable', function ($request, $response, $args) {
$body = $response->getBody();
$body->write('{"your_content": "here"}');
return $response->withHeader(
'Content-Type',
'application/json'
)->withBody($body);
});
Run Code Online (Sandbox Code Playgroud)
您正在尝试的header('Content-Type: application/json');可能实际上有效,但由于您正在为您的应用程序使用框架,您应该尊重他们的指导方针,否则您最终会遇到很多问题.此外,这getJoinable()是一个全局调用,您应该真正学习一些OOP,并且更多地遵循PSR指南,因为Slim 3是使用这些指南构建的.
您可以简单地执行以下操作(请注意我使用内置的json编码器帮助程序):
return $response->withJson($dataArray)->withHeader('Content-Type', 'application/json');
Run Code Online (Sandbox Code Playgroud)
如果要返回大量JSON,可以考虑创建一个路由组:
$app->group('/api', function () {
$this->response->withHeader('Content-Type', 'application/json');
$this->get(...);
$this->get(...);
}
Run Code Online (Sandbox Code Playgroud)
这是一个节省时间,并保持您的代码清洁可扩展和可维护.