Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Restanglar中的自定义(OData)路线_Angularjs_Asp.net Web Api_Restangular - Fatal编程技术网

Angularjs Restanglar中的自定义(OData)路线

Angularjs Restanglar中的自定义(OData)路线,angularjs,asp.net-web-api,restangular,Angularjs,Asp.net Web Api,Restangular,在服务器端,我使用带有OData路由约定的Web API,这意味着我获取单个实体的路由如下所示: /api/v1/Products(1) Restangular.one('Product', 1); 而不是: /api/v1/Products/1 通常,在Restangular中,我可以得到一个具有如下内容的实体: /api/v1/Products(1) Restangular.one('Product', 1); 但这对我的OData端点不起作用。我已经查看了customGET和se

在服务器端,我使用带有OData路由约定的Web API,这意味着我获取单个实体的路由如下所示:

/api/v1/Products(1)
Restangular.one('Product', 1);
而不是:

/api/v1/Products/1
通常,在Restangular中,我可以得到一个具有如下内容的实体:

/api/v1/Products(1)
Restangular.one('Product', 1);
但这对我的OData端点不起作用。我已经查看了
customGET
setRequestInterceptor
,但我似乎找不到一个示例,也不知道如何更改路由以匹配我的端点。最好是在全球范围内,因为我的所有实体都将具有相同的格式


非常感谢您的帮助。

Restanglar不明确支持ODataAPI。您可以让基础工作正常,但最好使用支持查询ODataAPI的库,如。

重新启动语言文档详细介绍如何创建自定义配置,您也可以通过编辑源代码restangular.js来实现这一点,但是这个扩展点允许我们保持一个干净的实现,该实现应该与大多数定制或restangular的未来版本兼容,并且允许并排使用标准REST API和OData v4 API

实施示例:

// Controller for list route
function ListCtrl($scope, ODataRestangular) {
  $scope.providers = ODataRestangular.all("providers").getList({ $count:true }).$object;
  $scope.some = ODataRestangular.several("providers", 15,16,17,18).getList();
  $scope.single = ODataRestangular.one("providers", 15).get();
}
从网络流量捕获的URL:

http://localhost:16486/odata/providers?$count=true

http://localhost:16486/odata/providers?$filter=((Id eq 15)或(Id eq 16)或(Id eq 17)或(Id eq 18))

http://localhost:16486/odata/providers(15) 

我努力尝试编写一个定制服务工厂,修改BreezeJS以使用OData v4,直到最近才偶然进入Restanglar,我现在真的很欣赏进入Restanglar的可扩展设计,缺乏文档化的客户端框架支持一直是阻碍ODataV4广泛采用的致命弱点。我希望这个答案有助于让更多的开发人员使用版本4


谢谢,我来看看breeze.js