我有DELETE方法的问题。下面是代码,我得到了404 error
DELETE方法。如果我使用get
方法而不是delete
,则代码执行正常。我帮我错了。
<?php
require "Slim/Slim.php";
require "NotORM/NotORM.php";
\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();
$pdo = new PDO('mysql:host=localhost;dbname=rest_trial', 'uname', 'passwd');
$db = new NotORM($pdo);
//DELETE method
$app->delete("/deletebook/:id", function ($id) use($app, $db) {
//$app->get("/deletebook/:id", function ($id) use($app, $db) {
$app->response()->header("Content-Type", "application/json");
$book = $db->books()->where("id", $id);
if ($book->fetch()) {
$result = $book->delete();
echo "Book deleted successfully";
}
else{
echo "Book id $id does not exist";
}
});
$app->run();
答案 0 :(得分:4)
如果查看浏览器控制台的网络标签,可以检查请求的方法是否为DELETE
。
某些浏览器不支持PUT
和DELETE
http请求方法。
Slim提供了一种方法:
“不幸的是,现代浏览器不提供对HTTP DELETE请求的本机支持。要解决此限制,请确保HTML表单的方法属性为”post“,然后将方法覆盖参数添加到HTML表单中,如下所示:“
<form action="/books/1" method="post">
... other form fields here...
<input type="hidden" name="_METHOD" value="DELETE"/>
<input type="submit" value="Delete Book"/>
</form>
“如果您使用的是Backbone.js或命令行HTTP客户端,您还可以使用X-HTTP-Method-Override标头覆盖HTTP方法。”