The Art of Readable Code && High Performance Comments

偶然發現有人提出這個問題,就把答案回收利用一下!

PHP 本身是種(專注於網頁,伺服器端)的語言,因此要以它實作 RESTful 毫不困難。大多框架也包含對應的處理機制,例如:

實際上,實作 RESTful 判斷用不了幾行;關鍵在於取用下列來自 $_SERVER 的變數:

  • REQUEST_METHOD: 實際請求方法, [get|post];如果伺服器與瀏覽器都支援的話,有可能出現 put|delete。但大部分狀況是「預設不支援」,所以一般是以下面兩組參數來模擬。
  • HTTP_X_REQUESTED_WITH: 透過 XHR 發出的請求,會被設為 ‘xmlhttprequest’。
  • HTTP_X_HTTP_METHOD_OVERRIDE: [get|post|put|delete] 模擬為何種 request method

雖說有不允許 ajax form 夾帶上傳檔案的說法,但我以 jQuery.form 實測,在 Chrome / Firefox 上傳時,都會正常送出請求,並包含上述 HTTP_X_* 標頭;不確定是否是由套件調用 hack 達成。IE9 的表現就有點怪異:不送這些 Header ,但也不跳轉頁面。

我在手上的專案裡,是透過送出特定參數,並且在 bootstrap.php 裡(框架 router 作用之前),修改上面兩項參數,在伺服器端打包模擬回 XHR 請求,以誘發與其他瀏覽器同樣的行為。

發表迴響

分類

%d 位部落客按了讚: