No edit summary |
No edit summary |
||
Line 42: | Line 42: | ||
<div class="video"> | <div class="video"> | ||
<div class="video__wrapper"> | <div class="video__wrapper"> | ||
<iframe src="https://www.youtube.com/embed/ | <iframe src="https://www.youtube.com/embed/rv31ziYXWME?rel=0&autoplay=0" frameborder="0" allowfullscreen></iframe> | ||
</div> | </div> | ||
<div class="video__navigation"> | <div class="video__navigation"> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="10" tabindex="0"> What is REST? </span> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="82" tabindex="0"> How does it work with MDriven turnkey? </span> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="125" tabindex="0"> calling an existing REST service </span> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="191" tabindex="0"> exposing ourself as REST service </span> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="244" tabindex="0"> MDriven turnkey app slot </span> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="333" tabindex="0"> how to expose information as the Rest service? </span> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="450" tabindex="0"> MDriven Rest/get strategy </span> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="573" tabindex="0"> how to consume data? </span> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="680" tabindex="0"> selfvm </span> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="716" tabindex="0"> Rest/Get operator </span> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="925" tabindex="0"> hard-coded objects </span> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="1336" tabindex="0"> Json to objects operator </span> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="1784" tabindex="0"> update data with allow post </span> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="1898" tabindex="0"> RestPost operator as a post command </span> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="2490" tabindex="0"> operation execution</span> | ||
<span class="navigation-item" data-video=" | <span class="navigation-item" data-video="rv31ziYXWME" data-start="2558" tabindex="0"> vSomeParam adding new parameters </span> | ||
Revision as of 20:06, 23 August 2018
REST services are services that are executed by connecting to an URL that defines operation and parameters then it returns an answer – not seldom as JSon objects.
Calling existing REST services MDriven supports a couple of EAL operators to manage REST services. All operators reside on the selfVM variable – available only in the ViewModel context.
selfVM.RestGet(targeturl,user,pwd,optionalnestingwithheaders)
selfVM.RestPost(targeturl,user,pwd,optionalnestingwithheadersAndUploadValues)
selfVM.RestDownload(targeturl,user,pwd,optionalnestingwithheaders)
There is a also a new helper operator on selfVM:
selfVM.JSonToObjects( «<Type>» , JSonDataInStringFormat)
The selfVM.JSonToObjects creates objects of class Type and matches attributes and association from the json data – and it can create object trees (unclosed graphs) by following names on associations. These few additions enables us to consume Rest services that others expose.
And when it comes to exposing ourselves to others – Turnkey has two new MVC verbs:
TurnkeyRest/Get?command=vmname&id=rootobjref
TurnkeyRest/Post?command=vmname&id=rootobjref
NOTE! the correct controller name is TurnkeyRest - this was earlierMDrivenRest
What they do is that they look for ViewModel named as the command-parameter, if one is found the accessgroups are checked to see if access is allowed. If it is, additional parameters sent in the url are matched against ViewModel variables – and given corresponding values. Then any actions present in the root level of the ViewModel are executed. And then the Get verb packs the viewmodel content as json in the response.
The Post verb looks in the request values after names that match the ViewModel root – if match is found the corresponding value is applied. Then changes – if any – are committed to db. The last thing for post is that it packs the complete ViewModel as json in the response. If there is an error – a string “error: <message>” is returned.
You must set RestAllowed on ViewModels you want to allow Rest access to.
Example
Here is a real life example
First Action GetExporttest retrieves data by converting another viewmodel to xml - it stores it in the variable vText
Next action invokes RestPost to send that data to an url-address, it also says that it should look at the nesting named 'Xml' - in this nesting we have the STRINGCONTENT (see also OCLOperators RestPost) data and we assign it to vText - we also add the header Authorization with a bearer token in order to get access from the receiving service.
Video
To make your experience more comfortable, we set the main tags mentioned in the video to the right bar menu of this mini player. Choose the interesting subtitle on the list and immediately get to the exact theme navigation-itemplace in the video. Now you can pick any topic to be instructed without watching the whole video.