Trace:
Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
jvx:common:util:rest [2019/03/13 09:11] admin |
jvx:common:util:rest [2020/06/15 14:38] cduncan Edited for English grammar (capitalization, punctuation, correct verb conjugation) |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ~~Title: REST services~~ | + | ~~Title: REST Services~~ |
We define the business logic with [[jvx:server:lco:objects|life-cycle objects]] on the server side. The access authorization of an application is checked by a [[jvx:server:security:manager|security manager]]. The business logic is usually available via master- or subconnections from the client. | We define the business logic with [[jvx:server:lco:objects|life-cycle objects]] on the server side. The access authorization of an application is checked by a [[jvx:server:security:manager|security manager]]. The business logic is usually available via master- or subconnections from the client. | ||
Line 7: | Line 7: | ||
For the use of the REST services, the authentication with username and password is necessary. [[https://en.wikipedia.org/wiki/Basic_access_authentication|BASIC]] is used as the authentication mechanism. The credentials are checked by the security manager of the application as usual. You do not need to change a source code line to integrate the REST services. | For the use of the REST services, the authentication with username and password is necessary. [[https://en.wikipedia.org/wiki/Basic_access_authentication|BASIC]] is used as the authentication mechanism. The credentials are checked by the security manager of the application as usual. You do not need to change a source code line to integrate the REST services. | ||
- | =====How it works===== | + | =====How It Works===== |
The REST implementation in JVx has been implemented with [[http://www.restlet.org/|Restlet]]. To use the REST services, the deployment descriptor must be configured as follows: | The REST implementation in JVx has been implemented with [[http://www.restlet.org/|Restlet]]. To use the REST services, the deployment descriptor must be configured as follows: | ||
Line 30: | Line 30: | ||
With this configuration, the following services are available: | With this configuration, the following services are available: | ||
- | ===== Available services ===== | + | ===== Available Services ===== |
==== Administration ==== | ==== Administration ==== | ||
Line 41: | Line 41: | ||
* [[#change_password|Change password]] | * [[#change_password|Change password]] | ||
- | === Test authentication === | + | === Test Authentication === |
Test URL:\\ | Test URL:\\ | ||
Line 64: | Line 64: | ||
If the login was successful, no response is generated and the status code is 204 (SUCCESS_NO_CONTENT). | If the login was successful, no response is generated and the status code is 204 (SUCCESS_NO_CONTENT). | ||
- | === Change password === | + | === Change Password === |
Test URL:\\ | Test URL:\\ | ||
Line 88: | Line 88: | ||
If the password has been changed, no response is generated and the status code is 204 (SUCCESS_NO_CONTENT). | If the password has been changed, no response is generated and the status code is 204 (SUCCESS_NO_CONTENT). | ||
- | === Custom services === | + | === Custom Services === |
If you want to register your own service at runtime, this can be done by | If you want to register your own service at runtime, this can be done by | ||
Line 105: | Line 105: | ||
''<nowiki>http://server:port/webapp/services/rest/</nowiki>**<fc #BF0000>APPLICATION_NAME</fc>**/**<fc #BF0000>LIFECYCLE_CLASS</fc>**/_admin/**<fc #BF0000>ACTION</fc>**/**<fc #BF0000>parameter</fc>**'' | ''<nowiki>http://server:port/webapp/services/rest/</nowiki>**<fc #BF0000>APPLICATION_NAME</fc>**/**<fc #BF0000>LIFECYCLE_CLASS</fc>**/_admin/**<fc #BF0000>ACTION</fc>**/**<fc #BF0000>parameter</fc>**'' | ||
- | ====Storage access (CRUD, Meta Data)==== | + | ====Storage Access (CRUD, Metadata)==== |
* [[#get-request_select|Select]] | * [[#get-request_select|Select]] | ||
Line 395: | Line 395: | ||
\\ | \\ | ||
- | ==== Call actions ==== | + | ==== Call Actions ==== |
The [[jvx:communication:calling_server_action|server-side actions]] can be called directly from the life-cycle object as well as from available business objects. It's also possible to use parameters. | The [[jvx:communication:calling_server_action|server-side actions]] can be called directly from the life-cycle object as well as from available business objects. It's also possible to use parameters. | ||
Line 464: | Line 464: | ||
curl_close($ch); | curl_close($ch); | ||
+ | </file> | ||
+ | |||
+ | Using Javascript: | ||
+ | |||
+ | <file html rest.html> | ||
+ | <html> | ||
+ | <head> | ||
+ | <script> | ||
+ | function doRest() { | ||
+ | const http = new XMLHttpRequest(); | ||
+ | const url='https://<server>/DB/services/rest/League/Standings/action/getResults'; | ||
+ | |||
+ | http.open("POST", url, true, 'user', 'password'); | ||
+ | http.withCredentials = true; | ||
+ | http.send("[88]"); | ||
+ | |||
+ | http.onreadystatechange=(e)=> | ||
+ | { | ||
+ | if (http.readyState == 4) | ||
+ | { | ||
+ | console.log(atob(eval(http.responseText))); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </script> | ||
+ | </head> | ||
+ | <body> | ||
+ | <button type="button" onclick="doRest()">REST call</button> | ||
+ | </body> | ||
+ | </html> | ||
</file> | </file> | ||