37

I take a look on Angular API for $resource and I didn't find some way to send a Request Body to a RESTful service.

I know this is possible using $http approach, like here, so, is it also possible to do using $resource?

Apparently this is the options for $resource.

action – {string} – The name of action. This name becomes the name of the method on your resource object.

method – {string} – HTTP request method. Valid methods are: GET, POST, PUT, DELETE, and JSONP

params – {object=} – Optional set of pre-bound parameters for this action.

isArray – {boolean=} – If true then the returned object for this action is an array, see returns section.

At the moment I didn't found any way to send a request payload containing an JSON object.

Community
  • 1
  • 1
Deividi Cavarzan
  • 10,034
  • 13
  • 66
  • 80

2 Answers2

41

Building on @gargc's answer, you can pass parameters and a body to a resource's method:

myResource.save({ param: myParam }, myObject);
Pier-Luc Gendreau
  • 13,553
  • 4
  • 58
  • 69
30

As long as the action supports a body message (e.g. POST, but not GET), you can pass a data parameter to the action method of your resource, which will be sent in the body of the request:

yourResource.save(yourData)

Example: http://jsfiddle.net/N3NXK/1/

garst
  • 6,042
  • 1
  • 29
  • 24
  • 2
    Thanks! I was thinking that only parameters inside the {} are acceptable. – Deividi Cavarzan Apr 25 '13 at 13:00
  • This saved me as well....I'm working with ServiceStack trying to POST ($resource.save()) a complex object which $resource serialized to query string parms which works fine for SS to deserialize flat objects but clearly not complex ones. Your fiddle saved me!! – mmacneil007 Jan 16 '14 at 02:32
  • I'm really confused by the jsFiddle you posted. If I look at chrome debugger, the invoked method is a GET over the wire. Doesn't angular make that a POST by default for save? – Ken Perkins Mar 18 '14 at 16:51
  • @KenPerkins I see a POST first and then a GET. It seems that jsFiddle responds with a 301 to the dummy POST request. – garst Mar 18 '14 at 22:27
  • I think you're right. Chrome Inspector appears to be masking the initial POST :S – Ken Perkins Mar 22 '14 at 14:46