簡體   English   中英

是否允許發布空數據?

[英]Is it allowed to POST empty data?

對於我正在開發的 web API 我想做類似於 Facebook 圖 API 的事情。一個用戶可以邀請另一個用戶。 要接受或拒絕邀請,其他用戶需要執行一個空的 POST 到:

/invitation/<invitationId>/accepted

要么

/invitation/<invitationId>/rejected

但是,這對我不起作用,因為當我發布空數據時,PHP(或 Apache?)返回以下錯誤:

請求的實體太大!

POST方式不允許傳輸數據,或數據量超過容量限制。

顯然這不是真的,因為 POST 數據是空的(我在 Firebug 中仔細檢查過)。 所以我的問題是:

  • HTTP 協議是否允許發布空數據? 如果沒有,我想我會發布一些虛擬數據,但我寧願避免這種黑客行為。

  • 如果允許,我怎樣才能讓 Apache/PHP 允許請求?

我猜您想做某種 RESTful api,這就是為什么您需要發送沒有數據的帖子。

Apache/php 應該允許你發送空的 post 數據,限制必須由你正在使用的框架的一些服務器配置強加

你可以用這個簡單的文件來測試它:

<?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>

您將看到腳本檢測到發布請求(使用來自 _SERVER 超全局的 REQUEST_METHOD),即使 _POST 數組是空的

你為什么要發出 POST 請求? 讓你的 API 檢測是否有數據發送,如果沒有數據,則發出 GET 請求。 事實上,在大多數情況下,發出 GET 請求效率更高,因為瀏覽器可以更輕松地緩存該信息(並且您可以通過發送特定於緩存的標頭使您的 API 智能地利用它)。

在你的情況下發出 POST 請求是沒有意義的:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM