【问题标题】:Getting post data using Slim Framework for PHP使用 Slim Framework for PHP 获取帖子数据
【发布时间】:2021-11-25 07:30:52
【问题描述】:

目前正在使用 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

【问题讨论】:

  • 你用的是什么版本的 Slim?
  • slimframework.com/docs/v4/objects/request.html#post-parameters 如果您使用 getParsedBody,请尝试将 Postman 客户端设置为 x-www-form-urlencodedform-data
  • @waterloomatt 我正在使用 Slim v4,并且使用 x-www-form-urlencoded 确实有效!只是想知道,有没有办法通过raw Json 传递数据并在代码中解析它?

标签: php json post slim


【解决方案1】:

终于想通了,需要补充:

$app->addBodyParsingMiddleware();

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

【讨论】:

    猜你喜欢
    • 2017-07-05
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    相关资源
    最近更新 更多