I haven't used $resource but perhaps you want to do this ? https://stackoverflow.com/questions/16203646/send-request-body-on-resource
On Mon, Sep 11, 2017 at 2:53 PM, L Eder <[email protected]> wrote: > Dan, > the version is 1.5.3. > > I still have to learn about preparing the case for online access. > > But at least i have what was sent by the server, below. > > For your information, I tried to ommit the 'value' here, but again, > that error "Status: 422 "invalidReason": "No 'value' key"" appears. > > > Stefano, > > i tried $http.post([url], data) and curiously it worked. > > However i still need to base on $resource, because my app requires > offline access (brought by a third-party module, that is a $resource > drop-in replacement). > > Thanks for your help, > ---- > > Server response: > " > {data: {…}, status: 422, config: {…}, statusText: "Unprocessable > Entity", headers: ƒ} > config: > data: > __proto__:Object > headers: > Accept:"application/json, text/plain, */*" > Authorization:"Basic ZG9tYWluYXBwLWFkbWluOnBhc3M=" > Content-Type:"application/json;charset=utf-8" > __proto__:Object > method:"POST" > paramSerializer:ƒ ngParamSerializer(params) > arguments:(...) > caller:(...) > length:1 > name:"ngParamSerializer" > prototype:{constructor: ƒ} > __proto__:ƒ () > [[FunctionLocation]]:ionic.bundle.js:23581 > [[Scopes]]:Scopes[2] > params: > asset: > value: > href:"http://localhost:8080/restful/objects/ > businessentities.Asset/52" > __proto__:Object > __proto__:Object > audit: > value: > href:"http://localhost:8080/restful/objects/ > businessentities.Audit/2" > __proto__:Object > __proto__:Object > location: > value: > href:"http://localhost:8080/restful/objects/ > businessentities.Location/46" > __proto__:Object > __proto__:Object > __proto__:Object > transformRequest:[ƒ] > transformResponse:[ƒ] > url:"http://localhost:8080/restful/services/domainapp. > dom.BusinessEntities.AuditItemMenu/actions/create/invoke" > __proto__:Object > data: > asset: > invalidReason:"Expected a link (because this object's type is not > a value) but found no 'href'" > value:"{"value":{"href":"http://localhost:8080/restful/ > objects/businessentities.Asset/52"}}" > __proto__:Object > audit: > invalidReason:"Expected a link (because this object's type is not > a value) but found no 'href'" > value:"{"value":{"href":"http://localhost:8080/restful/ > objects/businessentities.Audit/2"}}" > __proto__:Object > location: > invalidReason:"Expected a link (because this object's type is not > a value) but found no 'href'" > value:"{"value":{"href":"http://localhost:8080/restful/ > objects/businessentities.Location/46"}}" > __proto__:Object > x-ro-invalidReason:"Mandatory" > __proto__:Object > headers:ƒ (name) > arguments:(...) > caller:(...) > length:1 > name:"" > prototype:{constructor: ƒ} > __proto__:ƒ () > [[FunctionLocation]]:ionic.bundle.js:23738 > [[Scopes]]:Scopes[3] > status:422 > statusText:"Unprocessable Entity" > __proto__:Object > " > > > > 2017-09-11 5:38 GMT-04:00, Stefano Cascarini < > [email protected]>: > > How about trying > > > > $http.post(" > > http://localhost:8080/restful/services/domainapp.dom.BusinessEntities. > AuditItemMenu/actions/create/invoke", > > data) > > > > At the moment you're sending the data as url parameters rather than as a > > body. > > > > > > > > > > > > On Mon, Sep 11, 2017 at 8:00 AM, Dan Haywood < > [email protected]> > > wrote: > > > >> Hi Eder, > >> sorry no-one has come back with a quick solution for you ... I guess we > >> don't have too many Angular JS experts reading. > >> > >> To confirm, is this Angular JS (or v1.x) rather than Angular (V2+) ? > >> > >> If you could upload to github a simple example with Angular JS code that > >> demonstrates the issue, I'll see if I can take a look. > >> > >> Also, done it works with Postman, perhaps you could use Fiddler or just > >> the > >> Chrome/Firefox debugging tools to see what is being sent over the wire? > >> > >> It's also very easy to debug servers use, so you could put a breakpoint > >> in > >> the appropriate XxxServerSideResource class to see what's being received > >> in > >> the Postman Vs Angular cases. > >> > >> HTH > >> Dan > >> > >> On Sat, 9 Sep 2017, 02:13 L Eder <[email protected]> wrote: > >> > >> > What i am doing wrong or missing? > >> > > >> > Could someone give a tip on AngularJS for when invoking a create > >> > (POST) action ? > >> > > >> > I have currently this use case, and it works when the API method all > >> > args are by-value. > >> > > >> > However when the args are by-reference (object reference), i am unable > >> > to succeed it using AngularJS. But i succeed if i do it using Postman. > >> > > >> > The message i am getting is: > >> > > >> > "Expected a link (because this object's type is not a value) > >> > but > >> > found no 'href'" > >> > > >> > Thanks in advance, Eder > >> > > >> > > >> > > >> > = Source Code on backend = > >> > AuditItemMenu.java: > >> > @Action( > >> > ) > >> > @MemberOrder(sequence = "3") > >> > public AuditItem create( > >> > final Audit audit, > >> > final Asset asset, > >> > final Location location) { > >> > return auditItemrepository.create(audit, asset, location); > >> > } > >> > > >> > > >> > = Source Code on frontend = > >> > > >> > .factory('AuditItemStore', function($http, $ionicLoading, $resource) { > >> > var apiUrl = 'http://localhost:8080'; > >> > > >> > // Define a resource > >> > var AuditItemCreate = $resource( > >> > apiUrl + > >> > '/restful/services/domainapp.dom.BusinessEntities. > >> AuditItemMenu/actions/create/invoke'); > >> > > >> > var list = function() { > >> > > >> > var pendingWrites = []; > >> > > >> > return pendingWrites; > >> > } > >> > > >> > var create = function(auditItem) { > >> > > >> > var data = { > >> > "location" : { > >> > "href" : > >> > "http://localhost:8080/restful/objects/businessentities.Location/47" > >> > }, > >> > "asset" : { > >> > "href": > >> > "http://localhost:8080/restful/objects/businessentities.Asset/36" > >> > }, > >> > "audit" : { > >> > "href" : > >> > "http://localhost:8080/restful/objects/businessentities.Audit/2" > >> > } > >> > } > >> > > >> > // Post the new data > >> > var a2 = new AuditItemCreate(); > >> > > >> > a2.$save(data) > >> > .then(function(res) { console.log("success") }) > >> > .catch(function(req) { console.log("error saving obj: " + > >> > JSON.stringify(req, null, 4)); }) > >> > .finally(function() { console.log("always called") }); > >> > }; > >> > > >> > > >> > = Error result, as displayed by Chrome Developer Tools console = > >> > > >> > POST > >> > http://localhost:8080/restful/services/domainapp.dom.BusinessEntities > . > >> AuditItemMenu/actions/create/invoke?asset=%7B%22href%22:% > >> 22http:%2F%2Flocalhost:8080%2Frestful%2Fobjects% > >> 2Fbusinessentities.Asset%2F36%22%7D&audit=%7B%22href%22:% > >> 22http:%2F%2Flocalhost:8080%2Frestful%2Fobjects% > >> 2Fbusinessentities.Audit%2F2%22%7D&location=%7B%22href%22:% > >> 22http:%2F%2Flocalhost:8080%2Frestful%2Fobjects% > >> 2Fbusinessentities.Location%2F47%22%7D > >> > 422 (Unprocessable Entity) > >> > > >> > audititemstore.js:60 error saving obj: > >> > { > >> > "data": { > >> > "asset": { > >> > "value": > >> > "{\"href\":\" > >> > http://localhost:8080/restful/objects/businessentities.Asset/36\"}", > >> > "invalidReason": "Expected a link (because this object's > >> > type is not a value) but found no 'href'" > >> > }, > >> > "audit": { > >> > "value": > >> > "{\"href\":\" > >> > http://localhost:8080/restful/objects/businessentities.Audit/2\"}", > >> > "invalidReason": "Expected a link (because this object's > >> > type is not a value) but found no 'href'" > >> > }, > >> > "location": { > >> > "value": > >> > "{\"href\":\" > >> > http://localhost:8080/restful/objects/businessentities.Location/47\ > "}", > >> > "invalidReason": "Expected a link (because this object's > >> > type is not a value) but found no 'href'" > >> > }, > >> > "x-ro-invalidReason": "Mandatory" > >> > }, > >> > "status": 422, > >> > "config": { > >> > "method": "POST", > >> > "transformRequest": [ > >> > null > >> > ], > >> > "transformResponse": [ > >> > null > >> > ], > >> > "data": {}, > >> > "url": " > >> > http://localhost:8080/restful/services/domainapp.dom.BusinessEntities > . > >> AuditItemMenu/actions/create/invoke > >> > ", > >> > "params": { > >> > "location": { > >> > "href": > >> > "http://localhost:8080/restful/objects/businessentities.Location/47" > >> > }, > >> > "asset": { > >> > "href": > >> > "http://localhost:8080/restful/objects/businessentities.Asset/36" > >> > }, > >> > "audit": { > >> > "href": > >> > "http://localhost:8080/restful/objects/businessentities.Audit/2" > >> > } > >> > }, > >> > "headers": { > >> > "Accept": "application/json, text/plain, */*", > >> > "Authorization": "Basic ZG9tYWluYXBwLWFkbWluOnBhc3M=", > >> > "Content-Type": "application/json;charset=utf-8" > >> > } > >> > }, > >> > "statusText": "Unprocessable Entity" > >> > } > >> > > >> > > >> > > >> > > >> > NOTE: > >> > > >> > If i change the args, by adding 'value' in the JSON string, i still > >> > get the same error: > >> > > >> > var data = { > >> > "location": { > >> > "value": { > >> > "href": > >> > "http://localhost:8080/restful/objects/businessentities.Location/47" > >> > } > >> > }, > >> > "asset": { > >> > "value": { > >> > "href": > >> > "http://localhost:8080/restful/objects/businessentities.Asset/36" > >> > } > >> > }, > >> > "audit": { > >> > "value": { > >> > "href": > >> > "http://localhost:8080/restful/objects/businessentities.Audit/2" > >> > } > >> > } > >> > } > >> > > >> > > >> > > >> > POST > >> > http://localhost:8080/restful/services/domainapp.dom.BusinessEntities > . > >> AuditItemMenu/actions/create/invoke?asset=%7B%22value%22:% > >> 7B%22href%22:%22http:%2F%2Flocalhost:8080%2Frestful% > >> 2Fobjects%2Fbusinessentities.Asset%2F36%22%7D%7D&audit=%7B% > >> 22value%22:%7B%22href%22:%22http:%2F%2Flocalhost:8080% > 2Frestful%2Fobjects% > >> 2Fbusinessentities.Audit%2F2%22%7D%7D&location=%7B%22value% > >> 22:%7B%22href%22:%22http:%2F%2Flocalhost:8080%2Frestful% > >> 2Fobjects%2Fbusinessentities.Location%2F47%22%7D%7D > >> > 422 (Unprocessable Entity) > >> > audititemstore.js:60 error saving obj: > >> > { > >> > "data": { > >> > "asset": { > >> > "value": > >> > "{\"value\":{\"href\":\" > >> > http://localhost:8080/restful/objects/businessentities.Asset/36\"}}", > >> > "invalidReason": "Expected a link (because this object's > >> > type is not a value) but found no 'href'" > >> > }, > >> > "audit": { > >> > "value": > >> > "{\"value\":{\"href\":\" > >> > http://localhost:8080/restful/objects/businessentities.Audit/2\"}}", > >> > "invalidReason": "Expected a link (because this object's > >> > type is not a value) but found no 'href'" > >> > }, > >> > "location": { > >> > "value": > >> > "{\"value\":{\"href\":\" > >> > http://localhost:8080/restful/objects/businessentities.Location/47\ > "}}", > >> > "invalidReason": "Expected a link (because this object's > >> > type is not a value) but found no 'href'" > >> > }, > >> > "x-ro-invalidReason": "Mandatory" > >> > }, > >> > "status": 422, > >> > "config": { > >> > "method": "POST", > >> > "transformRequest": [ > >> > null > >> > ], > >> > "transformResponse": [ > >> > null > >> > ], > >> > "data": {}, > >> > "url": " > >> > http://localhost:8080/restful/services/domainapp.dom.BusinessEntities > . > >> AuditItemMenu/actions/create/invoke > >> > ", > >> > "params": { > >> > "location": { > >> > "value": { > >> > "href": > >> > "http://localhost:8080/restful/objects/businessentities.Location/47" > >> > } > >> > }, > >> > "asset": { > >> > "value": { > >> > "href": > >> > "http://localhost:8080/restful/objects/businessentities.Asset/36" > >> > } > >> > }, > >> > "audit": { > >> > "value": { > >> > "href": > >> > "http://localhost:8080/restful/objects/businessentities.Audit/2" > >> > } > >> > } > >> > }, > >> > "headers": { > >> > "Accept": "application/json, text/plain, */*", > >> > "Authorization": "Basic ZG9tYWluYXBwLWFkbWluOnBhc3M=", > >> > "Content-Type": "application/json;charset=utf-8" > >> > } > >> > }, > >> > "statusText": "Unprocessable Entity" > >> > } > >> > --------- > >> > > >> > 2017-09-01 14:01 GMT-04:00, L Eder <[email protected]>: > >> > > Hello members: > >> > > > >> > > Could any one shed a light on this issue? > >> > > > >> > > I successful run this POST request using Postman: > >> > > JSON body > >> > > " > >> > > { > >> > > "location" : { > >> > > "value" : { "href": > >> > > "http://localhost:8080/restful/objects/businessentities.Location/46 > " > >> > > } > >> > > }, > >> > > "asset" : { > >> > > "value" : { "href": > >> > > "http://localhost:8080/restful/objects/businessentities.Asset/36" } > >> > > }, > >> > > "audit" : { > >> > > "value" : { "href": > >> > > "http://localhost:8080/restful/objects/businessentities.Audit/2" } > >> > > } > >> > > } > >> > > " > >> > > > >> > > However on javascript: > >> > > " > >> > > var data = { > >> > > "location" : { > >> > > "href" : > >> > > "http://localhost:8080/restful/objects/businessentities.Location/47 > " > >> > > }, > >> > > "asset" : { > >> > > "href": > >> > > "http://localhost:8080/restful/objects/businessentities.Asset/36" > >> > > }, > >> > > "audit" : { > >> > > "href" : > >> > > "http://localhost:8080/restful/objects/businessentities.Audit/2" > >> > > } > >> > > } > >> > > > >> > > // Post the new data > >> > > var a2 = new AuditItemCreate(); > >> > > a2.$save(data); > >> > > ... > >> > > " > >> > > > >> > > i am getting this failure (as displayed by chrome developer tools): > >> > > " > >> > > data: > >> > > asset: > >> > > invalidReason:"Expected a link (because this object's type is not a > >> > > value) but found no 'href'" > >> > > value:"{"href":" > >> > http://localhost:8080/restful/objects/businessentities.Asset/36"}" > >> > > __proto__:Object > >> > > audit: > >> > > invalidReason:"Expected a link (because this object's type is not a > >> > > value) but found no 'href'" > >> > > value:"{"href":" > >> > http://localhost:8080/restful/objects/businessentities.Audit/2"}" > >> > > __proto__:Object > >> > > location: > >> > > invalidReason:"Expected a link (because this object's type is not a > >> > > value) but found no 'href'" > >> > > value:"{"href":" > >> > http://localhost:8080/restful/objects/businessentities.Location/47"}" > >> > > __proto__:Object > >> > > x-ro-invalidReason:"Mandatory" > >> > > " > >> > > > >> > > What is wrong in this javascript code? > >> > > > >> > > Thank you very much, Eder > >> > > > >> > > >> > > >
