Hi Martin, Dan, Thank you very much for the detailed explainations. Thanks for the screen cast link :)
Regards, Hiruni On Fri, Apr 10, 2015 at 1:02 AM, Dan Haywood <[email protected]> wrote: > Hi Hiruni, > > This info is documented in the RO spec [1] (section 2.9), but we get quite > a few people asking similar questions so I guess I didn't write that > section clearly enough.... > > As I think you've figured out, actions can be invoked either by GET, PUT or > POST; this is dependent on their @Action(semantics=...) of SAFE, IDEMPOTENT > and NON_IDEMPOTENT respectively. > > In the case of GET, the arguments are part of the URL. This can either be > in a simplified format (as in your example, sect 2.9.1 or RO spec), or in > an encoded string (2.10) > > In the case of PUT and POST, the arguments are part of the body (also > documented in 2.10). > > So, your issue is that you've combined the two options, which isn't gonna > work. > > ~~~ > While I was drafting this reply Martin also posted a reply; I think his > example is almost right, except that instead of -X GET it should be -X > POST. > > This screencast I did a while ago [2] might also help. > > Cheers > Dan > > > > [1] http://restfulobjects.org/ > [2] https://www.youtube.com/watch?v=_-TOvVYWCHc > > > On 9 April 2015 at 20:24, Martin Grigorov <[email protected]> wrote: > > > Hi, > > > > I think you have to send the parameter as a JSON body. > > Something like: > > curl -H "Content-Type: application/json" -X GET -d '{"param": {"value": > > "hello"}}' > > > http://localhost:8080/restful/services/EchoService/actions/echoParam/invoke > > > > Check: > > > > > http://isis.apache.org/components/viewers/restfulobjects/using-chrome-tools.html > > > > Martin Grigorov > > Freelancer, available for hire! > > Wicket Training and Consulting > > https://twitter.com/mtgrigorov > > > > On Thu, Apr 9, 2015 at 10:01 PM, Hiruni Madola <[email protected]> > > wrote: > > > > > Hi Everyone, > > > > > > I tried different ways of calling the REST end point passing arguments > > with > > > curl. > > > > > > eg : curl -X POST -u sven:pass -d "param=hello" > > > > > > http://localhost:8080/restful/services/EchoService/actions/echoParam/invoke > > > < > > > > > > http://localhost:8080/restful/services/EchoService/actions/echoParam/invoke?param=hello > > > > > > > > > > But I still get the same error response > > > : {"param":{"value":"hello"},"x-ro-invalidReason":"Argument 'param' > found > > > but no such parameter"} > > > > > > Although the error response states there is no such parameter, in my > > > Service method I have defined the parameter as properly. > > > > > > I might be overlooking some basics here. > > > But can someone please give me a hint what I may have done wrong? > > > > > > Or is this an inherent issue with argument passing in Apache Isis Rest > > API? > > > Any help is much appreciated. > > > > > > Regards, > > > Hiruni > > > > > > > > > > > > > > > On Thu, Apr 9, 2015 at 3:23 PM, Hiruni Madola <[email protected]> > > > wrote: > > > > > > > Hi All, > > > > > > > > I have a question about passing arguments when invoking a REST > endpoint > > > in > > > > Apache Isis. > > > > > > > > In my sample service I have a method to echo the parameter I pass to > > it. > > > > > > > > public String echoParam(String param) > > > > { > > > > return "echo "+param ; > > > > } > > > > > > > > I invoke this using curl as : > > > > curl -X POST -u sven:pass > > > > > > > > > > http://localhost:8080/restful/services/EchoService/actions/echoParam/invoke?param=hello > > > > > > > > I cannot get the desire result and I get below as the response; > > > > > > > > {"param":{"value":"hello"},"x-ro-invalidReason":"Argument 'param' > found > > > > but no such parameter"} > > > > > > > > Can you please advice on how to pass an argument to the REST service > > > > endpoint when invoking via a REST client? > > > > > > > > Regards, > > > > Hiruni > > > > > > > > > > > > > > > > > -- > > > Hiru > > > > > > -- Hiru
