php - slim 的 JSON 输出

标签 php json frameworks slim

我正在使用 Slim 框架和 PHP 来为我的应用程序创建一个 RESTful API。然而,我假设框架将有一些方法来创建更简单的 JSON 输出,而不仅仅是 exit($jsonEncodedVariable);

我是否在框架中遗漏了某些内容,或者我是否需要对每个方法都使用 json_encode()... exit($json)...?

所有数据都从我的 MySQL 数据库中取出,然后根据调用的 REST 请求放入 JSON 数组中。

例如,如果 /api/posts/all 被请求,我将 exit() 一个 JSON 数组,其中包含所有帖子的每个值对应其自己的键, “值”:键

我的问题是,有没有一种简单的方法,使用 slim 框架,exit()'ing JSON 代码而不是作为纯文本退出?

最佳答案

为什么不直接使用 Slim 的响应对象呢? (还有……为什么要退出?)

$dataAry = // Some data array

$response = $app->response();
$response['Content-Type'] = 'application/json';
$response['X-Powered-By'] = 'Potato Energy';
$response->status(200);
// etc.

$response->body(json_encode($dataAry));
// Or echo json_encode($dataAry)

让我先说我仍然认为自己是菜鸟,所以如果我犯了错误,请纠正我,以便我学习。但是,我正在处理一个类似的问题/问题,我想我可能会用 2 美分插话,并就此事进行更多讨论。关于 Slim on Stack 的信息越多越好。

我基本上在玩同样的事情,我注意到你在使用 exit;起初,我使用 exit 也是因为 echo 包含一堆 HTML 并弄乱了返回给我的 AJAX 调用的内容。当我使用 exit 时,它干净利落地剪掉了 HTML,但是 Slim 响应对象并没有像我定义的那样更改响应 header (参见上面的代码。)

我意识到这并不是 Slim 的设计初衷。使用 echo ,而不是退出。注意 - Slim Doc:

Whenever you echo() content from within a route callback, the echo()’d content is captured >in an output buffer and later appended to the Response body before the HTTP response is >returned to the client.

这很方便,但我无法回应。我搞砸的是一个更大的问题。内容与行为分离。如果您像我一样,您将设置一个单页应用程序,其中此代码基本上位于 index.php 上。我需要加载初始 html,因此我将其包含在该页面上。我需要做的是创造一个更干净的分离。我的路由设置正确,因此当人们 GET '/' Slim_Views(请参阅 Develop Rel.)为我返回渲染的 html 和 js 模板。太棒了!

现在我可以使用 Slim 的所有工具,而且我的代码更加简洁、独立、易于管理,并且更符合 http 协议(protocol)。我想这就是框架的用途。 :-)

注意:我并不是说这一切都是你的结果,但我认为问题和你的设置看起来非常相似。它可能会帮助另一个在同一条道路上徘徊的新人。

更新:正如@alttag 提到的,这个答案已经过时了(Slim 2)

For Slim3, see an answer below or see this page in the documentation

关于php - slim 的 JSON 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6807404/

相关文章:

python 错误。我不明白我做错了什么

javascript - 如何编写 mysql 查询来获取 JSON 输出?

php - Kohana:有哪些替代方案?

PHP 框架 - 它们仅仅是个人喜好吗?

php整数和 float 比较不匹配

php - Drupal 网站给出 404 但页面正在显示

php - 将图像上传和下载到 MongoDB 是否比在磁盘上更快

php - DEFINER =`coinstourb_admin` @`localhost` *//

javascript - JSON - 查找对象的长度

java - 为什么有这么多Java框架?