对于我正在开发的Web API,我想做类似于Facebook Graph API的事情。用户可以邀请其他用户。要接受或拒绝邀请,其他用户需要执行空POST:
/invitation/<invitationId>/accepted
或
/invitation/<invitationId>/rejected
但是,这对我不起作用,因为当我发布空数据时,PHP(或Apache?)会返回以下错误:
请求实体太大了!
POST 方法不允许传输数据,或数据量 超出容量限制。
显然这不是真的,因为POST数据是空的(我在Firebug中进行了双重检查)。所以我的问题是:
HTTP协议是否允许POST空数据?如果不是,我想我会发布一些虚拟数据,但我宁愿避免这种黑客攻击。
如果允许 ,我该如何让Apache / PHP允许请求?
答案 0 :(得分:0)
我想你想要做某种RESTful api,这就是你需要发送没有数据的帖子的原因。
Apache / php应该允许您发送空的帖子数据,这些限制必须由您正在使用的框架的某些服务器配置强加
你可以用这个简单的文件测试一下:
<?php
echo '<h2>This page was requested using ' . $_SERVER['REQUEST_METHOD'] . '</h2>';
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>
<form action="" method="post">
<input type="submit" value="Request this page using POST" />
</form>
您将看到脚本检测到post请求(使用来自_SERVER超全局的REQUEST_METHOD),即使_POST数组是empy
答案 1 :(得分:-1)
你为什么要做POST请求?让您的API检测是否发送了数据,如果没有数据,则发出GET请求。事实上,在大多数情况下提出GET请求是因为它更有效率,因为浏览器可以更轻松地缓存该信息(并且您可以通过发送特定于缓存的标头来使您的API智能化以利用它)。
在您的情况下提出POST请求毫无意义:)