繁体   English   中英

DELETE方法的问题-PHP slim框架

[英]Issue with DELETE method- PHP slim framework

我有DELETE方法的问题。 下面是代码,其中我收到DELETE方法的404 error 如果我使用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();

如果您在浏览器控制台的“网络”选项卡中查找,则可以检查请求的方法是否实际上是DELETE

某些浏览器不支持PUTDELETE http请求方法。 Slim为此提供了一种方法:

不幸的是,现代浏览器不提供对HTTP DELETE请求的本机支持。要解决此限制,请确保HTML表单的method属性为“ 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方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM