首页 > 解决方案 > 使用 Slim Framework for PHP 获取帖子数据

问题描述

目前正在使用 Slim Framework for PHP 开发 CRUD 方法,并使用 Postman 对其进行测试。我已经能够通过 Get 方法选择全部或选择单个对象,并且现在尝试插入一个对象,这就是我的问题开始的地方。我一直在关注 YT 视频(https://www.youtube.com/watch?v=FYQrMr7oDv0 24:48)只是为了了解一切,但是,youtuber 使用 $request->getParam('paramName') 这是不是我可以使用的方法。我尝试过使用 $request->getParsedBody() 和 $request->getBody(),但是所有这些都没有返回。

以下是有问题的方法

$app->post('/users/add', function (Request $request, Response $response, array $args) {
    $data = $request->getParsedBody();
    $username = $data['username'];
    $passhash = $data['passhash'];
    $email = $data['email'];

    $sql = "INSERT INTO user (username, passhash, email) VALUE (:username, :passhash, :email)";

    try {
        $db = new DB();
        $conn = $db->connect();

        $stmt = $conn->prepare($sql);

        $stmt->bindParam(':username', $username);
        $stmt->bindParam(':passhash', $passhash);
        $stmt->bindParam(':email', $email);

        $result = $stmt->execute();

        $db = null;
        $response->getBody()->write(json_encode($result));
        return $response
            ->withHeader('content-type', 'application/json')
            ->withStatus(200);
    } catch (PDOException $e) {
        $error = array (
            "message" => $e->getMessage()
        );

        $response->getBody()->write(json_encode($error));
        return $response
            ->withHeader('content-type', 'application/json')
            ->withStatus(500);
    }
});

我应该如何获取我试图使用 Postman 发布的数据,链接到下面的 Postman 图片 https://i.stack.imgur.com/4foNu.png

标签: phpjsonpostslim

解决方案


最终想通了,需要补充:

$app->addBodyParsingMiddleware();

应用创建后,为了能够解析 JSON、表单数据和 XML,需要添加这个中间件


推荐阅读