2013-07-14 71 views
1

我一直在閱讀一些關於PHP和JavaScript中REST的指南。 我正面臨一個小實施問題。REST API實現問題php/JS

假設我想刪除我的服務器端以根據收到的URI進行操作。 例如:

如果它收到上http DELETE URI:/users/563它將刪除用戶與ID 546 我的問題(JavaScript的)客戶端上的DELETE請求開始:

function ajaxRequest() 
{ 

    var http_request = new XMLHttpRequest(); 
    http_request.onreadystatechange = function() 
    { 
     var done = 4, ok = 200; 
     if (http_request.readyState == done && http_request.status == ok) 
     { 
      responseHandler(http_request.responseText); 
     } 
    }; 


    http_request.open("DELETE", php/dbHandler.php , true); 
    http_request.send(data); 
} 

在刪除請求我必須指定服務器端的URL,在這種情況下,它是dbHandler.php 我應該在哪裏插入URI /users/563而不會丟失服務器端目標地址?

在服務器端,如果我嘗試使用命令$_SERVER['REQUEST_URI']提取URI,我總是會得到php/dbHandler.php在客戶端創建/發送URI並在服務器端提取它的正確方法是什麼?

+0

服務器端的資源我不確定發生了什麼事。當然你應該向** users/563 **發出請求,而不是** php/dbHandler.php **? –

+0

聽起來像你應該有'/ users/563'作爲URI,並在你的服務器上設置一些URL重寫來讓它由dbHandler.php處理。另請參閱http://stackoverflow.com/questions/2539394/rest-http-delete-and-parameters – bfavaretto

回答

0

您需要與一些知道如何根據您的需求在服務器端翻譯您的請求的處理程序一起工作。

如果您使用的是Apache - 它通過.htaccess file

所以你的情況處理所有的請求,要將此網址http://www.domain.com/php/dbHandler.php與參數,這個網址翻譯:http://www.domain.com/php/users/563 所以你的htaccess看起來就像是:

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/

RewriteRule ^php/users/([0-9]+)/?$ php/dbHandler.php?uid=$1 [L] 

這樣的阿帕奇知道,如果他在的形式PHP /用戶獲取網址/ 123,他將其重定向到實際的URL下的PHP/dbHandler.php與價值PARAM GET ID 123

這是基礎知識 - 如果你不知道它,你應該閱讀它,這裏是堆棧,你有大量的材料。

當然,每個服務器都有它自己的重定向uris方法,比方說在微軟IIS中它有點不同。

0

我有我的要求是這樣的:

function ajaxRequest(id){ 
// your stuff here... 
http_request.open("DELETE", "users/" + id, true); 
// your other stuff ... 
} 

,但你需要確保你有映射到接收的URI /用戶/(編號)數據