2012-07-08 29 views
0

我期待構建我的第一個API,並且已經對從SOAP到RESTful API的各種類型的API進行了大量研究。我決定使用帶有http頭的RESTful方法,因爲我認爲這是最符合我需求的方法。REST http scheme

在閱讀了很多關於RESTful API方案的工作方式之後,我有一個問題,我希望有人能夠幫助我,這似乎就像是對我而言缺少的一部分難題。

我知道,我通常會通過兩種POSTGETPUT,或者DELETE將數據發送到一個特定的URL類似 - app/user/{userid}/{property},但我不明白的是怎麼說得到解釋在服務器端。顯然,對於不同的用戶來說沒有無窮無盡的目錄,所以這是在htaccess文件中的某種操作來捕獲這些請求?有人可以從這個問題上了解一些情況嗎?

謝謝!

回答

2

當然,沒有什麼能夠阻止你維護龐大的目錄結構,在POST/PUT上創建新的文件和目錄。但這會很麻煩並且容易出錯。

您需要一些服務器端技術。理想地建立在REST的基礎上。這個技術/框架可以理解URL模式,能夠將它們映射到控制器/處理程序/某段代碼,並在您的示例中提取路徑變量,如useridproperty

例如在你有標準,它允許你寫:

@Path("app/user/{userid}/{property}") 
public class UserResource { 

    @GET 
    public String getUserProperty(
     @PathParam("userid") int userId, 
     @PathParam("property") String property 
    ) { 
      //... 
    } 
} 

見框架如何很好地處理低級別的東西?每次訪問例如GET app/user/42/salary它將爲您提取42salary,並用適當的參數呼叫getUserProperty

這樣的框架的另一個優點是基於期望的Content-type自動編組/解組:將庫解組JSON/XML,將對象傳遞給您的控制器方法,並將返回的對象回傳給某種表示。

0

您可以使用框架輕鬆定義路由。

例如,你可以在PHP中使用硅石,與您可以定義喜歡的路線:

// index.php 
require_once __DIR__.'/../vendor/autoload.php'; 

$app = new Silex\Application(); 

// If we stored users in an array ... 
$users = array(
    1 => 'Adrien', 
    2 => 'John', 
); 

$app->get('/users/{id}', function($id) use($app, $users) { 
    return $users[$id]; 
}); 

$app->run(); 

然後,您將能夠curl -X GET -i http://localhost/index.php/users/1

你可以看一下硅石的文檔這裏http://silex.sensiolabs.org/

+0

好吧,但如果我發送一個CURL例如一個特定的URL,這個框架如何獲取數據並相應地指示它?我不是發送所有數據到一個地方,我可以加載Silex應用程序,然後用它來解釋的URL,我實際上發送捲曲到一個特定的網址... – ackerchez 2012-07-08 13:20:14

+0

更新我的回答 – AdrienBrault 2012-07-08 13:22:17

+0

啊,所以你會有捲曲到一個特定的頁面仍然然後幾乎將目標頁面後的所有內容作爲變量..這看起來幾乎像一個修改GET – ackerchez 2012-07-08 13:42:23