Angular $资源和webApi

时间:2016-02-14 21:48:22

标签: angularjs asp.net-web-api

我正在使用webApi并使用entityframework生成模型GET的重载方法(int id)我试图使用$resource

的查询调用它

我正在尝试使用$resource将可选参数传递给来电,但收到错误[$resource:badcfg]我有一个谷歌和人们说添加

{
  'get': {method: 'GET'},
  'query': {method: 'GET', isArray: true}
} 

进入该功能,所以我尝试了这个:但仍然没有运气。

function minorResource($resource, appSettings) {
    return $resource(appSettings.serverPath + "/api/minorworks/:id",
        {
            'get': {method: 'GET'},
            'query': {method: 'GET', isArray: true}
        });
}

您会使用2种不同的方法,还是可以使上述功能起作用?

对于completness,这是我的Controller调用

minorResource.query({id: vm.seachCriteria}, function (data) {
        //console.log(data);
        vm.minorWork = data;
    });

1 个答案:

答案 0 :(得分:0)

请注意,查询用于检索数组对象,而get用于检索单个对象。这意味着通过get,您通常会将对象的id发送给API。

所以在你的情况下:

var minorWorksResource = $resource(appSettings.serverPath + "/api/minorworks/:id");
// Note that query returns an array.
var works = minorWorksResource.query(function() {
    var firstWork = works[0];
});
// Note that we pass an ID that will be fetched in the query string.
var singleWork = minorWorksResource.get({id: 123}, function() {

});

WebAPI部分:

[RoutePrefix("api/minorworks")]
public class MinorWorksController : ApiController {
    public IHttpActionResult Get(int id) {
         var singleWork = null;
         // Retrieve a single item;
         return Ok(singleWork);
    }

    public IHttpActionResult Get() {
         var workList = null;
         // Retrieve the whole list.
         return Ok(workList );
    }
}