【发布时间】: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-urlencoded或form-data。 -
@waterloomatt 我正在使用 Slim v4,并且使用
x-www-form-urlencoded确实有效!只是想知道,有没有办法通过raw Json传递数据并在代码中解析它?