0
我目前使用Silex 1.3里面的Doctrine DBAL版本2.5来调用MySQL DB的REST调用。我设法让GET/GET/{id}和DELETE/{id}工作相当简单,但我似乎无法让我的POST/PUT工作。Silex - 我的REST POST/PUT调用没有接收参数
这里是休耕代码
$app->post('/student', function($firstName, $lastName) use($app) {
$sql = "INSERT INTO tbl_students (firstName, lastName)
VALUES (:firstName, :lastName)";
$student = $app['db']->prepare($sql);
$student->bindValue(':firstName', $firstName, PDO::PARAM_STR);
$student->bindValue(':lastName', $lastName, PDO::PARAM_STR);
$student->execute();
return "insert successful";
});
$app->put('/student/{id}', function($id, $firstName, $lastName) use($app){
$sql = "UPDATE tbl_students
SET firstName = :firstName, lastName = :lastName
WHERE id = :id";
$student = $app['db']->prepare($sql);
$student->bindValue(':id', $id, PDO::PARAM_INT);
$student->bindValue(':firstName', $firstName, PDO::PARAM_STR);
$student->bindValue(':lastName', $lastName, PDO::PARAM_STR);
$student->execute();
return "student succesfully updated";
});
如果我硬编码的默认值,它工作完全正常,以及使用bindParam(),并用自己的价值观。
我把我的卷曲后收到此错误消息在我转储一切恢复
<span class="exception_message">Controller "Closure" requires that you provide a value for the "$firstName" argument (because there is no default value or because there is a non optional argument after this one).</span>
下面是我用
休耕卷曲命令curl -X POST -d "firstName=First123&lastName=Last456" URL/student
curl -X POST -d '{"firstName":"First123","lastName":"Last456"}' URL/student --header "Content-Type:application/json"
curl -X POST -d "firstName=First123&lastName=Last456" URL/student --header "Content-Type:text/html"
'firstName'和'lastName'是不是你的路线的一部分 - 因此,为什么您会收到错误消息。您必须从'请求'中读取这些信息,或者将它们包含在您的路线中。 – Artamiel