我有一个angularJS $资源:
$resource("http://localhost:3000/:id",{
id: '@id'
},
{
get: {
method:'GET',
isArray: false
},
foo: {
method:'POST',
url: 'http://localhost:3000/:id/foo',
isArray: false
}
});
现在,如果我打电话:
User.foo({id:'123', anotherParam: 'bar'});
这会导致调用URL“http://localhost:3000/foo”并将id和anotherParam参数作为POST字段传递。
我实际上希望它调用'http://localhost:3000/123/foo'并仅将anotherParam参数作为POST字段传递。
如何让id参数正常运行?
答案 0 :(得分:20)
https://docs.angularjs.org/api/ngResource/service/$resource
非GET" class" actions:Resource.action([parameters],postData,[success],[error])
你需要这样做:
ValueError: shapes (4,1) and (4,4) not aligned: 1 (dim 1) != 4 (dim 0)
使用单个参数调用函数时。它假定可选参数不存在并将其作为postData发送。
答案 1 :(得分:1)
已接受的解决方案对我不起作用(C:\Program Files (x86)\Notepad++\plugins\APIs\
)。
必须手动设置内容类型并转换为表单数据。
样品:
AngularJS v1.4.8
用法:
var DirectoryApi = $resource('api/directories', null, {
move: {
url: 'api/directories/:name/_move',
params: {"name" : "@name"},
headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
transformRequest: function (param) {
return $.param(param);
},
method: 'POST'
},
});