如何在Slim 3框架(PHP)中设置JSON标头?

1 php json slim

如何在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');

Ali*_*aru 6

从未使用过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是使用这些指南构建的.


Scr*_*omy 5

您可以简单地执行以下操作(请注意我使用内置的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)

这是一个节省时间,并保持您的代码清洁可扩展和可维护.