【问题标题】:Send StatusCode 400 when "No Records Found"“未找到记录”时发送 StatusCode 400
【发布时间】:2017-01-07 10:37:15
【问题描述】:

slim v2中MySql响应不成功时如何设置StatusCode为400?

$app->get('/gg/:user/:pass', 'gg');

function gg($user, $pass) {
                $sql = "...";
                try {
                        $db = getDB();
                        $stmt = $db->prepare($sql);
                        $stmt->bindParam("user", $user);
                        $stmt->bindParam("pass", $pass);
                        $stmt->execute();
                        $gs = $stmt->fetchAll(PDO::FETCH_OBJ);
                        if ($gs) {
                            ....
                        } else {
                                http_response_code(400);
                                throw new PDOException('No records found.');
                        }
                } catch(PDOException $e) {
                        echo '{"error":{"text":'. $e->getMessage() .'}}';
                }
        }

api 返回状态错误 200 但是当没有找到 mysql 数据时它应该更改为状态码 400。

【问题讨论】:

  • 欢迎来到 SO。不起作用在这里几乎总是一个无用的表达。什么是预期结果和什么是实际结果是您在询问时应该回答的两个重要问题。创建MCV 问题以获得更好的答案。
  • @Url wow,整个 two 帖子都归功于您,而您已经在折腾您的重量级代表了。不知所措!
  • @YvesLeBorg 对不起,伙计,我是新人,我并不真正关心我的代表。我会在将来获得一些经验时发表更好的帖子。 GetLife > GetRep

标签: php slim


【解决方案1】:

According to the slim2 manual the correct approach is:

$app->response->setStatus(400);

由于您需要在其中获取$app 的函数,因此有两种方法:

在这种情况下,我建议:http://docs.slimframework.com/configuration/names-and-scopes/

$app = Slim::getInstance(); 

【讨论】:

  • 已经测试过了。它说:类型:ErrorException 代码:8 消息:未定义变量:app
  • $app 不在你的函数范围内
  • 在函数中添加$app = Slim::getInstance();
  • 工作!非常感谢!
  • 老实说我从未使用过 slim2,所以这一切都只是基于阅读手册
猜你喜欢
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
  • 2012-05-20
  • 2013-04-14
  • 2020-06-24
  • 1970-01-01
相关资源
最近更新 更多