使用PHP删除HTTP方法与REST API使用PHP
我正在制作一个小应用程序来获取REST的挂件,并且在DELETE方法中遇到了一些麻烦。我以前从未使用过,所以我不确定它的行为。使用PHP删除HTTP方法与REST API使用PHP
无论如何,我跟着this tutorial去了解一些基础知识。我修改了它,所以用户可以提交数据并从MySQL数据库查看,而不是使用预制数组。
我有3个文件:
server.php - 的 “API”,其确定所使用的方法和相应地动作
input.php - 显示用户输入的数据的形式
viewinput.php - 显示已输入的输入。
我想现在在viewinput.php上放置一个“删除”按钮,以便可以删除一个条目。这是我的代码,显示输入的信息。
while ($result = mysql_fetch_array($sql)){
?>
<tr><td><? echo $result['id']." "; ?></td><td><? echo $result['text']; ?></td>
<form method = "delete" >
<td><input type="submit" name="delete" value="delete"></input></td></tr>
<input type="hidden" name = "hidden_delete" value="<? echo $result['id']; ?>"></input>
</form>
<?
}
现在,在我的server.php文件(API),这是被称为其确定的方法和打破了URL到用于进一步处理的组件的非常第一功能。
public function serve() {
$uri = $_SERVER['REQUEST_URI'];
echo $method = $_SERVER['REQUEST_METHOD']; //GET and POST are displayed, DELETE isn't
$paths = explode('/', $this->paths($uri));
array_shift($paths); //
$resource = array_shift($paths);
当我按下删除键,URL从
/rest/viewinput
去
/rest/viewinput?delete=delete&hiddendelete=3 //assuming I deleted the 3rd entry
据我了解,网址应该是/ REST/viewinput/3时,提交DELETE方法
在我的server.php文件中,当我回显方法时,“DELETE”不会像显示POST一样显示,并且GET方法。
我发现 this resource关于DELETE,并从我的理解一个标识符将通过URL传递,但应该有一些方法接收就像GET和POST(这意味着我的代码应显示DELETE时,我回声的方法)。
以下是PUT
和DELETE
的当前内部情况。
如果您是“普通浏览”,大多数浏览器并不实际使用这些动词中的任何一个。但是,它们支持XML Http请求(即AJAX)。所以从客户端,你不能直接在HTML表单元素上直接使用PUT
或DELETE
,并使其工作。您需要使用Complex857建议的解决方法,即在请求中包含意图。
如果您使用的是后台AJAX调用,或者确实如果您未使用浏览器发出请求,则可以使用全套HTTP动词,包括PUT
和DELETE
。有一点需要注意的是,在IIS上,您可能需要更改设置以允许使用这些动词,因为您可以设置服务器接受的特定动词。
你在运行什么服务器 - 有时你需要在服务器上允许DELETE http动词。 – Fenton
它是html 4.0规范的限制。你只是不能使用除GET和POST之外的东西。看到这个答案:http://stackoverflow.com/a/166501/1515540 – complex857
@索尼我在localhost – user1104854