angularjs – 是否可以使用角度为$http服务的参数化网址模板
我正在为我的RESTful api使用$资源,并喜欢参数化的URL模板,例如’api / clients /:clientId’
这对于CRUD操作非常有用.然而,我的一些api只是报告或只读端点,而不需要完全的RESTful治疗.我觉得使用$资源是太过分了,而是使用$http的自定义数据服务. 唯一的缺点是我丢失了参数化的URL模板.我喜欢定义一个像“api / clients /:clientId / orders /:orderId”这样的url,并且通过{clientId:1,orderId:1}.我意识到我可以动态构建网址,但希望$http支持参数化模板,我还没有找到它. 祝一切顺利 更新7/5 我的搜索中缺少的是“插入”.当我在角度$http中搜索“url插值”时,会出现更多信息.简短的答案看起来是“否”$http不支持url插值.然而,有一些相当简单的方法可以实现. 1.使用$interpolate: $interpolate here的文档 var exp = $interpolate('/api/clients/{{clientId}}/jobs/{{jobId}}',false,null,true); var url = exp({ clientId: 1,jobId: 1 }); 2.编写自己的url插值函数 本·奈德(Ben Nadel)在这个确切的主题here上有一个很棒的帖子. 3.从角度资源中窃取功能 在angular-resource.js在Route.prototype上查看setUrlParams.这是相当简单的. 使用$interpolate的示例数据服务 (function () { 'use strict'; var serviceId = 'dataservice.jobsReports'; angular.module('app').factory(serviceId,['$http','$interpolate',function ($http,$interpolate) { var _urlBase = 'http://localhost:59380/api'; var _endPoints = { getJobsByClient: { url: 'Clients/{{clientId}}/Jobs',useUrlInterpolation: true,interpolateFunc: null } }; // Create the interpolate functions when service is instantiated angular.forEach(_endPoints,function (value,key) { if (value.useUrlInterpolation) { value.interpolateFunc = $interpolate(_urlBase + '/' + value.url,true); } }); return { getJobsByClient: function (clientId) { var url = _endPoints.getJobsByClient.interpolateFunc({ clientId: clientId }); return $http.get(url); } }; }]); })();
为了防止这个被“回答”当被答复了
1.使用$interpolate: $interpolate here的文档 var exp = $interpolate('/api/clients/{{clientId}}/jobs/{{jobId}}',true); } }); return { getJobsByClient: function (clientId) { var url = _endPoints.getJobsByClient.interpolateFunc({ clientId: clientId }); return $http.get(url); } }; }]); })(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |