2012-10-18 77 views
2

過去幾周我在PHP(Laravel框架)中構建了一個RESTful API。此外,我正在構建使用此API的JavaScript前端(jQuery/Backbone)。GET請求中的ID作爲查詢參數的數組RESTful API

在這個API中有一些GET請求需要相當數量的查詢參數,其中大多數是ID數組。我已經構造這樣的:

/api/cars?colors[]=1&colors[]=3&makes[]=6&makes[]=2&sold=false 

(具有ID例如,顏色= 1是紅色的,使與ID = 6的奧迪等)

在PHP數組的從$ _GET [解析'顏色']開箱即用。此外,當我使用

$.ajax({ 
    url: "someurl", 
    method: "GET", 
    data: { 
    cars: theCarsArray, 
    makes: theMakesArray, 
    sold: false 
    } 
}); 

似乎也很好地工作(數組發送如上所述的URL)。我想知道:這是在REST接口中發送ID數組的可接受方法嗎?這種方法有什麼缺點嗎?有什麼選擇?

回答

1

以我的經驗,這是將數組值傳遞給PHP腳本的可接受方式。而且,由於您使用的是PHP,您應該利用已有的功能。也就是說,當網頁在其他編程語言/框架中實現時,數組值通常不會以這種方式傳遞。在某些情況下,你會看到:

/api/cars?colors=1&colors=3&makes=6&makes=2&sold=false 

在那些語言/框架,他們經常提供了訪問請求參數作爲標量或作爲陣列的方法。所以你公開你的實現。如果你想隱藏你使用PHP的事實,你可以改變它到上面,但是你必須添加額外的功能來解析你的請求參數。就像我之前所說的那樣,因爲你正在用PHP實現這個功能,所以我沒有發現利用它提供的開箱即用功能有什麼問題。

我唯一的建議是將您的網址終結點更改爲/api/cars/,因爲您正在返回一系列汽車(可能),而且這似乎是更加REST風格的方法。

無論如何,只是我的兩分錢。希望這是有幫助的。

+0

這個語法真的是PHP特有的嗎?看起來Rails也使用這種方法? http://rails.nuvvo.com/lesson/6371-action-controller-parameters – ec30