(Angular JS)如果响应是一个JSON对象数组,如何通过传递参数来过滤$ http.get?
我正在向我的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
请求的响应。由于响应是一个数组,我认为它不工作?或者我做错了什么?
由于@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
}
谢谢。肯定会让服务人员知道。 – Roosh1r
@randominstanceOfLivingThing你刚才复制我的答案。 – 2016-08-24 16:12:33
@ SoftwareEngineer171,当我添加我的答案时,我只注意到过滤功能。我没有看到地图功能。 – randominstanceOfLivingThing
您可以在得到回复时对其进行过滤。
response = response.filter(function(a) {
return a.AssigneeId === config.params.AssigneeId;
}).map(function(a) {
return a.ProjectName;
})[0];
,服务器必须支持... –
你所要求的API服务器给你的过滤列表,针对这hanpend你必须有一个API路由,它接受的参数类似于/ getProjectsById/{id},并让它为您过滤结果。也请看看这里:https://en.wikipedia.org/wiki/Percent-encoding和在这里:https://stackoverflow.com/questions/21753072/angular-http-request-with-json-param –