2016-08-24 53 views
0

我正在向我的REST API發出$http GET請求以獲取項目列表。我想要做的就是使用param選項過濾響應,只將項目分配給特定的人員。

var config = { 
    withCredentials: true, 
    params: { 
    AssigneeId: 12423 
    } 
}; 
$http.get(baseUrl + 'projects', config).then(function successCallback(response) { 
    //do things on success 
}, function errorCallback(response) { 
    //do things on error 
}); 

AssigneeId字段是project對象的屬性。我遇到的問題是$http.get的響應是JSON對象的數組,使得param無用。我的回答看起來是這樣的:

[{ 
    ProjectName: 'project 1', 
    AssigneeId: 12311, 
    size: 5 
}, { 
    ProjectName: 'project 2', 
    AssigneeId: 15232, 
    size: 4 
}, { 
    ProjectName: 'project 3', 
    AssigneeId: 43123, 
    size: 2 
}, { 
    ProjectName: 'project 4', 
    AssigneeId: 12423, 
    size: 6 
}] 

我想做的事與param是隻得到'project 4'爲我GET請求的響應。由於響應是一個數組,我認爲它不工作?或者我做錯了什麼?

+0

,服務器必須支持... –

+0

你所要求的API服務器給你的過濾列表,針對這hanpend你必須有一個API路由,它接受的參數類似於/ getProjectsById/{id},並讓它爲您過濾結果。也請看看這裏:https://en.wikipedia.org/wiki/Percent-encoding和在這裏:https://stackoverflow.com/questions/21753072/angular-http-request-with-json-param –

回答

0

由於@Kevin B提到它必須由您的服務器支持。你需要與你的服務人員交談以解決這個問題或者通過正確的參數。直到你的服務器人解決這個問題。如果你想使用參數對其進行過濾,可以有這個新的代碼

var assigneeId = 12423; 
var config = { 
    withCredentials: true 
}; 
$http.get(baseUrl + 'projects', config) 
.then(successCallback(response){ 
    var assignedProject = response.filter(function(o){ 
    return o.AssigneeId === assigneeId; 
    }).map(function(o){ 
    return o.ProjectName; 
    })[0]; 
}, errorCallback(response){ 
    //do things on error 
} 
+0

謝謝。肯定會讓服務人員知道。 – Roosh1r

+0

@randominstanceOfLivingThing你剛纔複製我的答案。 – 2016-08-24 16:12:33

+0

@ SoftwareEngineer171,當我添加我的答案時,我只注意到過濾功能。我沒有看到地圖功能。 – randominstanceOfLivingThing

0

您可以在得到回覆時對其進行過濾。

response = response.filter(function(a) { 
    return a.AssigneeId === config.params.AssigneeId; 
}).map(function(a) { 
    return a.ProjectName; 
})[0]; 
相關問題