How do I not send url template parameters with request body in angular?

ぃ、小莉子 提交于 2019-11-30 17:23:17

Use the first parameter for your url template parameters and put your post data in the second parameter like this:

resource.save({id:14, type:'user'}, {name:'Bob Dole'});

Here's the line from the Angular docs that shows the function signature:

non-GET "class" actions: Resource.action([parameters], postData, [success], [error])

Here's an example in plunker

The request you get does not have the url parameters in the body:

Request URL:http://run.plnkr.co/JAOqZqW6RSywatUM/badUrl/user/14
Request Method:PUT
Request Payloadview source
{name:Bob Dole}

FWIW, I did find a workaround, thanks to @Reboog711, by including a transformRequest parameter like so:

resource = $resource(
    "http://foo.com/service/:type/:id",
    {},
    {save: {
        method:'PUT', 
        transformRequest:function(data) {
            delete data.type;
            delete data.id;
            return JSON.stringify(data);
        },
        params: {type:'@type', id: '@id'}
    }}
);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!