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 | ||
de:jvx:common:util:rest [2019/03/13 08:52] admin |
de:jvx:common:util:rest [2020/07/24 23:42] admin |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ~~Title: REST Service~~ | + | ~~Title: REST Dienste~~ |
- | ~~TOC 2-3~~ | + | |
- | Wir definieren die Business Logik mit [[de:jvx:server:lco:objects|Life-Cycle Objekten]] am Server. Die Zugriffsberechtigung einer Applikation wird durch einen [[de:jvx:server:security:manager|Security Manager]]geprüft. Der Zugriff auf die Business Logik erfolgt üblicherweise via Master- oder SubConnections vom Client. | + | Wir definieren die Business Logik mit [[de:jvx:server:lco:objects|Life-Cycle Objekten]] am Server. Die Zugriffsberechtigung einer Applikation wird durch einen [[de:jvx:server:security:manager|Security Manager]] geprüft. Der Zugriff auf die Business Logik erfolgt üblicherweise via Master- oder SubConnections vom Client. |
Um die Technologie Unabhängigkeit zu vollenden, steht die Komplette Business Logik einer Applikation auch via REST zur Verfügung. | Um die Technologie Unabhängigkeit zu vollenden, steht die Komplette Business Logik einer Applikation auch via REST zur Verfügung. | ||
- | Für die Benützung der REST Services ist die Autentifizierung mit Benutzername und Passwort notwendig. Als Authentifizierungsmechanismus wird [[https://de.wikipedia.org/wiki/HTTP-Authentifizierung#Basic_Authentication|BASIC]] erwendet Die Überprüfung der Daten wird vom Security Manager der Applikation wie gewohnt durchgeführt. Sie müssen für die Integration der REST Services keine Zeile Source Code verändern. | + | Für die Benützung der REST Dienste ist die Autentifizierung mit Benutzername und Passwort notwendig. Als Authentifizierungsmechanismus wird [[https://de.wikipedia.org/wiki/HTTP-Authentifizierung#Basic_Authentication|BASIC]] erwendet Die Überprüfung der Daten wird vom Security Manager der Applikation wie gewohnt durchgeführt. Sie müssen für die Integration der REST Dienste keine Zeile Source Code verändern. |
=====Funktionsweise===== | =====Funktionsweise===== | ||
- | Die REST Implementierung in JVx wurde mit [[http://www.restlet.org/|Restlet]] umgesetzt. Um die REST Services zu nutzen, muss der Deployment Deskriptor wie folgt konfiguriert werden: | + | Die REST Implementierung in JVx wurde mit [[http://www.restlet.org/|Restlet]] umgesetzt. Um die REST Dienste zu nutzen, muss der Deployment Deskriptor wie folgt konfiguriert werden: |
<file xml> | <file xml> | ||
Line 31: | Line 30: | ||
Mit dieser Konfiguration stehen folgende Services zur Verfügung: | Mit dieser Konfiguration stehen folgende Services zur Verfügung: | ||
- | ===== Verfügbare Services ===== | + | ===== Verfügbare Dienste ===== |
==== Administration ==== | ==== Administration ==== | ||
- | Für die Administration stehen unterschiedliche Dienste zur Verfügung. Diese können im Standardfall nur mittels POST Requests verwendet werden. Falls jedoch benutzerdefinierte Admin-Dienste registriert wurden, können diese auch mittels GET Request angesprochen werden. | + | Für die Administration stehen unterschiedliche Dienste zur Verfügung. Diese können im Standardfall nur mittels POST Requests verwendet werden. Falls jedoch benutzerdefinierte Dienste registriert wurden, können diese auch mittels GET Request angesprochen werden. |
Folgende Dienste stehen standardmässig zur Verfügung: | Folgende Dienste stehen standardmässig zur Verfügung: | ||
Line 45: | Line 44: | ||
Anmeldung testen:\\ | Anmeldung testen:\\ | ||
- | ''<nowiki>http://server:port/webapp/services/rest/</nowiki>**<fc #BF0000>APPLICATION_NAME</fc>**/**<fc #BF0000>LIFECYCLE_CLASS</fc>**/_admin/**<fc #BF0000>testAuthentication</fc>**'' \\ | + | ''<nowiki>http://server:port/webapp/services/rest/</nowiki>**<fc #BF0000>APPLICATION_NAME</fc>**/_admin/**<fc #BF0000>testAuthentication</fc>**'' \\ |
oder \\ | oder \\ | ||
- | ''<nowiki>http://server:port/webapp/services/rest/</nowiki>**<fc #BF0000>APPLICATION_NAME</fc>**/**<fc #BF0000>LIFECYCLE_CLASS</fc>**/_admin/**<fc #BF0000>testAuthentication</fc>**/**<fc #BF0000>parameter</fc>**'' | + | ''<nowiki>http://server:port/webapp/services/rest/</nowiki>**<fc #BF0000>APPLICATION_NAME</fc>**/_admin/**<fc #BF0000>testAuthentication</fc>**/**<fc #BF0000>parameter</fc>**'' |
Der Request benötigt eine HashMap im JSON Format. | Der Request benötigt eine HashMap im JSON Format. | ||
Line 68: | Line 67: | ||
Anmeldung testen:\\ | Anmeldung testen:\\ | ||
- | ''<nowiki>http://server:port/webapp/services/rest/</nowiki>**<fc #BF0000>APPLICATION_NAME</fc>**/**<fc #BF0000>LIFECYCLE_CLASS</fc>**/_admin/**<fc #BF0000>changePassword</fc>**'' \\ | + | ''<nowiki>http://server:port/webapp/services/rest/</nowiki>**<fc #BF0000>APPLICATION_NAME</fc>**/_admin/**<fc #BF0000>changePassword</fc>**'' \\ |
oder \\ | oder \\ | ||
- | ''<nowiki>http://server:port/webapp/services/rest/</nowiki>**<fc #BF0000>APPLICATION_NAME</fc>**/**<fc #BF0000>LIFECYCLE_CLASS</fc>**/_admin/**<fc #BF0000>changePassword</fc>**/**<fc #BF0000>parameter</fc>**'' | + | ''<nowiki>http://server:port/webapp/services/rest/</nowiki>**<fc #BF0000>APPLICATION_NAME</fc>**/_admin/**<fc #BF0000>changePassword</fc>**/**<fc #BF0000>parameter</fc>**'' |
Der Request benötigt eine HashMap im JSON Format. | Der Request benötigt eine HashMap im JSON Format. | ||
Line 102: | Line 101: | ||
Der Aufruf erfolgt mittels: | Der Aufruf erfolgt mittels: | ||
- | ''<nowiki>http://server:port/webapp/services/rest/</nowiki>**<fc #BF0000>APPLICATION_NAME</fc>**/**<fc #BF0000>LIFECYCLE_CLASS</fc>**/_admin/**<fc #BF0000>ACTION</fc>**'' \\ | + | ''<nowiki>http://server:port/webapp/services/rest/</nowiki>**<fc #BF0000>APPLICATION_NAME</fc>**/_admin/**<fc #BF0000>ACTION</fc>**'' \\ |
oder \\ | oder \\ | ||
- | ''<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>**/_admin/**<fc #BF0000>ACTION</fc>**/**<fc #BF0000>parameter</fc>**'' |
==== Storage Zugriff (CRUD, Meta Data) ==== | ==== Storage Zugriff (CRUD, Meta Data) ==== | ||
Line 466: | Line 465: | ||
curl_close($ch); | curl_close($ch); | ||
+ | </file> | ||
+ | |||
+ | Mittels 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> | ||