Php 标题为json的slim框架不起作用
大家好,我正在使用slim framework for JSON API所有响应都有效,但在标题显示text/html时,文档中提到了函数whitHeader:Php 标题为json的slim框架不起作用,php,json,header,frameworks,slim,Php,Json,Header,Frameworks,Slim,大家好,我正在使用slim framework for JSON API所有响应都有效,但在标题显示text/html时,文档中提到了函数whitHeader: $app = new \Slim\App; $app->get('/new/', function (Request $request, Response $response){ $response->getBody()->write(json_encode(['message'=&g
$app = new \Slim\App;
$app->get('/new/', function (Request $request, Response $response){
$response->getBody()->write(json_encode(['message'=>'ok']));
$response_h = $response->withHeader('Content-Type', 'application/json; charset=utf-8');
return json_decode($response_h);
});
$app->run();
使用$response\u h->getHeaders()时show json header(work),但在运行时使用另一个header,我跟踪了它替换header的位置,并且位于slim/slim/container.php当前函数registerDefaultServices我替换:
Headers $ headers = new (['Content-Type' => 'text / html; charset = UTF-8']);
到
但这不是最好的方法,如何更改标题
并尝试使用:
$ app-> response () -> header ();
$ app-> response () -> setHeader ();
在所有返回中,响应函数()不存在。使用:
返回给HTTP客户端的HTTP响应将有一个头。HTTP头是提供HTTP响应元数据的键和值的列表。您可以使用Slim应用程序的响应对象来设置HTTP响应的头。响应对象有一个公共属性headers
,它是\Slim\Helper\Set的一个实例代码>这提供了一个简单、标准化的界面来操作HTTP响应头
如果具有给定名称的标头不存在,则返回null
。您可以使用大写、小写或混合大小写以及破折号或下划线来指定标题名称。使用您最熟悉的命名约定
使用:
HTTP响应通常有一个主体。Slim提供了一个PSR7响应对象,您可以使用它检查和操作最终HTTP响应的主体
与PSR 7请求对象一样,PSR 7响应对象将主体实现为\PSR\Http\Message\StreamInterface
的实例。您可以使用PSR7响应对象的getBody()
方法获取HTTP响应主体StreamInterface
实例。如果传出HTTP响应长度未知或对于可用内存来说太大,则最好使用getBody()
方法
您的代码应该如下所示:
<?php
$app = new \Slim\App();
$app->get('/new/', function(Request $requst, Response $response) {
$response->getBody()->write(json_encode(['YOUR_ARRAY']));
$newResponse = $response->withHeader(
'Content-type',
'application/json; charset=utf-8'
);
return $newResponse;
});
是的!!谢谢Davide谢谢你我发现了我的错误,在我返回时我使用返回json_encode($newResponse),没有json_encode工作得很好!
<?php
$app = new \Slim\Slim();
$app->response->headers->set('Content-Type', 'application/json');
<?php
$contentType = $app->response->headers->get('Content-Type');
<?php
$app = new \Slim\App();
$app->get('/new/', function(Request $requst, Response $response) {
$response->getBody()->write(json_encode(['YOUR_ARRAY']));
$newResponse = $response->withHeader(
'Content-type',
'application/json; charset=utf-8'
);
return $newResponse;
});