2012-01-15 89 views
1

所以這是一個2部分問題,所以如果我在這裏複製問題,我提前道歉。PHP - 解析REST請求URI並返回結果

我正在PHP中實現一個REST API,用於創建工作的Web應用程序。到目前爲止,我已經實現了一個函數,它將查詢用戶數據庫表並以JSON編碼返回結果。

我發出請求(使用GET方法,順便說一句)的方式是請求URL:http://api.my-wicked-awesome-webapp.com/?method=getAllUsers。然後結果是JSON編碼並在網頁上以純文本的形式回顯出來。現在,這是行得通的,這樣做真的沒什麼問題,但是在我看來,這種格式看起來有點笨重。

我的問題的第一部分:我該如何解析請求(在這種情況下,GET請求)到一個URL,如http://api.my-wicked-awesome-webapp.com/users/,這將與第一個示例URL做同樣的事情?

我的問題的第二部分:現在,如果我要在Web瀏覽器中輸入第一個示例URL,JSON編碼結果將顯示在網頁上。我會如何將這些數據拉入其他網頁?我可以使用JQuery.ajax()來提出請求並提取數據嗎?如果是這樣,我應該怎麼做呢?

與往常一樣,如果我的任何問題措辭不佳,我都會很樂意重寫任何內容。預先感謝任何答案!

回答

1
  1. 你需要.htaccess文件mod_rewrite的,

    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^users/?$ index.php?method=getAllUsers [PT,L] 
    

    更好地利用

    RewriteRule ^([^/]*)/?$ index.php?method=$1 [PT,L] 
    

    這將像http://api.my-wicked-awesome-webapp.com/ANY_NAME/任何URL映射到http://api.my-wicked-awesome-webapp.com/index.php?method=ANY_NAME

  2. 您可以撥打JQuery.ajax()您做主要api.my-wicked-awesome-webapp.com。但不是從foreign.domain.com。如果您想從另一個域中執行此操作,則需要使用JSONP

    使用JSON你會叫的,

    $.getJSON('http://api.my-wicked-awesome-webapp.com/users/', function(json){ 
    }); 
    

    使用JSONP你把它作爲

    $.getJSON(
        "http://api-my-wicked-awesome-webapp.com/?method=getAllUsers&callback=?", 
        function(data) { 
        } 
    ); 
    

    而且在index.php你需要用的輸出與$_GET['callback'];像echo "$_GET['callback'](".$JSON_DATA.")";這會調用加載回調。

+0

好的,所以對於JSONP處理,我需要在API URL中指定一個回調參數嗎?我在YouTube上看到,你需要另外一個參數,比如'http://api-my-wicked-awesome-webapp.com/?method = getAllUsers&callback =?'。這仍然是這種情況,還是我可以省略回調參數? – 2012-01-15 06:59:03

+0

現在查看我更新的答案。 – 2012-01-15 07:10:47

+0

啊哈!我明白這是如何工作的!非常感謝! – 2012-01-15 16:44:47