我已经看过100个将ID传递到$ resource.get()的示例,以便从Angular中的后端查询信息。我无法找到的是如何传递一个复杂的对象。
如果我有一个要返回的对象表,并且我希望使用多个过滤器项对它们进行搜索,我需要将这些项作为参数或作为一个复杂参数传递。例如,假设我有一张人名和他们的城市,州等的表格。我希望能够说出这样的话:
var myResource = $resource(url);
myResource.get({name : "Mike", state : "Texas"});
返回可以是单行或多行。但重点是如何将参数传递给API调用?
我设置更简单的其他方法的方法是创建一个我在其中返回的存储库:
return resource('/api/broker/productionInfo/');
然后在我的API中我这样做(在[RoutePrefix(" api / broker")]设置之后:
[HttpGet]
[Route("productionInfo")]
public IHttpActionResult GetProductions()
{}
这一切都很棒但是我希望能够在存储库调用中添加搜索条件,然后在API方法中添加(即从查询字符串中提取或者然后传递它)。
答案 0 :(得分:1)
如果我理解你的要求正确,你只想将其他参数传递给角度资源get
请求。它就像你已经建议的一样简单:
resource.get({id: 1, custom_param_1: "param1", custom_param_2: "param2"});
这将导致http请求如下所示:
/resource/1?custom_param_1=param1&custom_param_2=param2
然后,您可以在API方面提取这些参数。
需要注意的是get
次请求的最大长度,如果要为请求附加大量不同的参数,最好使用post
或put
代替。
答案 1 :(得分:0)
在 GetProduction API方法中,我唯一看到您缺少的是[FromUri]
装饰属性。由于Get
仅支持通过查询字符串绑定的params(无正文绑定)。
你的参数:
options: {
StartDate: _startDate
EndDate: _endDate
TextSearch: "some search query....",
Page: 1,
PageSize: 25,
et...
}
然后,从您的控制器调用您的存储库:
repository.get(options).$promise.then(function (data) {
// data = response payload from backend
});
reposiroty
....
return resource('/api/broker/productionInfo/');
....
API
[HttpGet]
[Route("productionInfo")]
public IHttpActionResult GetProductions([FromUri] SearchCriteriaModel criteria) {
....
}
希望有所帮助。