2016-01-01 23 views
1

REST:骨幹 - 改變默認的GET URL格式

我的REST API的以下網址: http://localhost/Project/index.php/rest/resource/car

這將運行在返回表中的所有數據作爲JSON標準的GET請求。 但是,我的REST API還具有以下內容:

http://localhost/Project/index.php/rest/resource/car/carId/2

其中用將只返回數據對於汽車來說,與carId當= 2

骨幹:

this.mycar.fetch({ 
     data: { 'carId': '1' }, 
     success: function() { ... 

運行在主幹上面的代碼將創建並運行,看起來請求像這樣:http://localhost:7070/Project/index.php/rest/resource/car?carId=1,這與我的REST api不兼容,所以我該如何改變它?

編輯: 型號和款式:

var Car = Backbone.Model.extend({ 
    urlRoot: ROOT + 'car', 
    idAttribute: 'carId' 

}); 

var Cars = Backbone.Collection.extend({ 
    model: Car, 
    url: ROOT + 'car', 
}) 

回答

1

data屬性的jQuery的$.ajaxdata財產。對於GET請求,它用於設置查詢參數。

您應該更新模型的.url方法/屬性。

直接設置它作爲一個參數:

this.mycar.url = 'api_entry_point/car/' + car_id; 

編輯:我剛纔注意到您有carId作爲您的網址資源。這是一個非常規的網址。看起來這就是爲什麼你的模型構造函數中有idAttribute: 'carId'carId不必位於網址中。它可能是:

http://localhost/Project/index.php/rest/resource/car/2 

在上面的url中,2是模型id。網址中絕對不需要有carId。另外,由於資源包含多個項目,因此使用cars而不是car段更有意義。

http://localhost/Project/index.php/rest/resource/cars/2 

當然這只是個人喜好。

+0

正如我在我的問題提到的,我已經有一個網址在我的模型:'http:// localhost/Project/index.php/rest/resource/car',它返回所有的汽車。這會受到你的改變的影響嗎? – john

+0

@john就像其他重置屬性值的JavaScript對象覆蓋之前的值一樣。如果它已經涉及到所有車輛的進入,您可以編碼:'this.mycar.url = this.mycar.url +'/'+ carId' – undefined

+0

對不起,但我很困惑,我編輯了這個問題並添加了我的模型...'carId'沒有在我的模型中定義.. – john

1

在你的骨幹模型文件,你可以通過這樣的

url : return "http://localhost/Project/index.php/rest/resource/car/carId/=" + this.id; 
在骨幹視圖

你可以通過像

this.model.id = this.id; 
this.mycar.fetch({ 
     success: function() { 
+0

正如我在我的問題中提到的,我已經在我的模型中有一個url:'http:// localhost/Project/index.php/rest/resource/car',它將返回所有汽車。這會受到你的改變的影響嗎? – john

+0

然後你可以像這樣傳遞模型 url:return「http://localhost/Project/index.php/rest/resource/car/」+ this.id; 在您的視圖中,如果你想通過車身份證然後這樣做 this.model.id =「carid /」+ this.id; this.mycar.fetch({ 成功:函數(){ 如果你不想通過,那麼你可以通過 this.model.id = 「」 –