Documentation

Trace:

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
de:jvx:common:util:rest [2019/03/13 09:03]
admin
de:jvx:common:util:rest [2022/11/17 11:12] (current)
admin
Line 1: Line 1:
 ~~Title: REST Dienste~~ ~~Title: REST Dienste~~
  
-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 34: Line 34:
 ==== 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 40: Line 40:
   * [[#​anmeldung_testen|Anmeldung testen]]   * [[#​anmeldung_testen|Anmeldung testen]]
   * [[#​passwort_aendern|Passwort ändern]]   * [[#​passwort_aendern|Passwort ändern]]
 +  * [[#​datenbank_pruefen|Datenbank prüfen]]
  
 === Anmeldung testen === === Anmeldung testen ===
  
-Anmeldung testen:\\  +Test URL:\\  
-''<​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 66: Line 67:
 === Passwort ändern === === Passwort ändern ===
  
-Anmeldung testen:\\  +Test URL:\\  
-''<​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 87: Line 88:
  
 Wenn das Passwort geändert wurde, wird kein Response generiert und der Status Code ist 204 (SUCCESS_NO_CONTENT). Wenn das Passwort geändert wurde, wird kein Response generiert und der Status Code ist 204 (SUCCESS_NO_CONTENT).
 +
 +=== Datenbank prüfen ===
 +
 +Test URL:​\\ ​
 +''<​nowiki>​http://​server:​port/​webapp/​services/​rest/</​nowiki>​**<​fc #​BF0000>​APPLICATION_NAME</​fc>​**/​_admin/​**<​fc #​BF0000>​checkDB</​fc>​**''​
 +
 +== GET-Response ==
 +
 +Wenn die Prüfung erfolgreich war, wird kein Response generiert und der Status Code ist 204 (SUCCESS_NO_CONTENT). Wenn die Datenbank nicht verfügbar ist, wird der Status Code 500 (SERVER_ERROR_INTERNAL) geliefert. Es ist ebenfalls möglich das die Konfiguration nicht gefunden werden konnte. In diesem Fall wird der Status Code 503 (SERVER_ERROR_SERVICE_UNAVAILABLE) geliefert.
  
 === Benutzerdefinierte Dienste === === Benutzerdefinierte Dienste ===
Line 93: Line 103:
  
 <code java> <code java>
-AdminService.register(String pApplicationName,​ String pAction, ​IAdminServiceDelegate ​pDelegate);​ +UserService.register(String pApplicationName,​ String pAction, ​ICustomServiceDelegate ​pDelegate);​ 
-AdminService.unregister(String pApplicationName,​ String pAction, Class<? extends IAdminServiceDelegate>​ pClass)+UserService.unregister(String pApplicationName,​ String pAction);
 </​code>​ </​code>​
  
-erfolgen. Der Dienst kann entweder per GET oder POST Request angesprochen werden, je nachdem ob **//IAdminServiceGetDelegate//** oder **//IAdminServicePostDelegate//** verwendet wird.+erfolgen. Der Dienst kann entweder per GET oder POST Request angesprochen werden, je nachdem ob **//IACustomServiceGetDelegate//** oder **//IACustomServicePostDelegate//** verwendet wird.
  
 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 465: Line 475:
  
 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>​
  
This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information