我想在slims的$ response对象上链接多个方法调用,但是如果我这样做,我会收到一个错误(状态500),什么也没发生。 这也可能是缺乏基本的PHP知识,我对PHP的经验不是很丰富,这是我第一次使用slim或与此相关的任何服务器端/ API框架。
我尝试过翻转所有呼叫的顺序,并以不同的方式进行呼叫,但都没有发现。从长远来看,为更新应用程序构建API。因此,我将不得不处理具有多个参数的get请求,对它们进行评估并根据结果进行处理,并返回deffirent响应。
// this one fails, i set the status to 900 on purpose just to see what happens
$app->get('/', function (Request $request, Response $response, array $args) {
$response->getBody()->write("Slim main page")->withStatus(900);
return $response;
});
第一个示例确实在网络标签上给了我500错误。我猜这可能会提示某种语法错误?如果我改变这条路线,看起来像这样:
# this one works fine, except the status code setting gets ignored, but why?
$app->get('/', function (Request $request, Response $response, array $args) {
$response->write("Slim main page")->withStatus(900);
return $response;
});
几乎可以解决问题,但是由于某种原因未设置状态代码。
我希望第一个返回状态代码为900的字符串“ slim主页”。即使我使用的是非组合状态代码,也会忽略此设置。
第二个代码块仅是出于测试目的的更改。
我很确定这是个新手,但是我真的迷失在这里,因此,除苗条文档外,任何建议或一些简单的文章/文档都值得赞赏。
答案 0 :(得分:1)
write
方法返回写入流(而不是新的响应对象)的字节数。试试这个:
$app->get('/', function (Request $request, Response $response, array $args = []) {
$response->getBody()->write('Slim main page');
$response = $response->withStatus(200);
return $response;
});
注意1:在开发人员上启用错误详细信息:'displayErrorDetails' => true
注意2:HTTP代码900是Slim的无效状态代码,将引发以下执行。
Type: InvalidArgumentException
Message: Invalid HTTP status code
File: vendor/slim/slim/Slim/Http/Response.php
Line: 228