我有休息服务:
http://localhost:3000/api/brands
当我从网络浏览器进行测试时,效果很好。
我在角度服务中使用它:
var motoAdsServices = angular.module('motoAdsServices', ['ngResource']);
motoAdsServices.factory('Brand', ['$resource', function($resource) {
return $resource('http://localhost:3000/api/:id', {}, {
query: {
method: 'GET',
params: {
id: 'brands'
},
isArray: true
}
});
}]);
当它被调用时我有错误,因为在reqest URL中我没有端口号:
Request URL: http://localhost/api/brands
为什么端口数字被削减?角度削减了吗?
在Angular doc写道:
参数化的URL模板,其参数前缀为:如/ user /:username。如果您使用的是带有端口号的网址(例如http://example.com:8080/api
),则会受到尊重。
更新
我使用角度版本1.0.8(感谢@KayakDave引起你的注意)但Angular doc适用于版本1.2。
答案 0 :(得分:10)
它有一个冒号,因此被剥离,有点像:id。如果你逃避它,你应该没问题。请尝试使用http://localhost\:3000/api/:id
。您可能会在路线或其他地方再次遇到此问题。
如果发生变化,有an issue关于此行为。
已更新: http://localhost\\:3000/api/:id
答案 1 :(得分:2)
因为角度拦截了网址并将:any
视为您应该传递给它的参数。
一种简单的方法就是将\:3000
放入您的网址。
motoAdsServices.factory('Brand', ['$resource', function($resource) {
return $resource('http://localhost:3000\:3000/api/:id', {}, {
query: {
method: 'GET',
params: {
id: 'brands'
},
isArray: true
}
});
}]);
答案 2 :(得分:0)
资源插件问题的快速修复:
var fixedTargetUrl = TARGET_URL.replace(/(:\d{4})/, "\\$1");