REST: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
 
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 35: Zeile 35:
== Server in PHP Programmiert ==
== Server in PHP Programmiert ==


Grundschwierigkeit scheint mir zu sein, dass immer nur in "Verzeichnissen" gedacht wird und nicht wie in PHP in "Parameter", toll wäre eigentlich wenn man dies in "methodhandler" umbiegen könnte. Es kommen z.B. 3 verschiedene Anfragen auf mich zu:
=== Vorarbeiten im Apache ===


./aqbanking/UMSATZ/~BLZ~/~Konto#~?f=text
* Datei /etc/mod_rewrite.conf


das bedeutet ich müsste in PHP irgenwie sagen können:
  <IfModule mod_rewrite.c>
 
  class root (tRESTworker) {
  echo("REST works!<br>"  );
}
   
   
  class umsatz (tRESTworker) {
  RewriteEngine   On
   BLZ = frompath(+1);
RewriteLog      /var/log/apache2/rewrite_log
  KONTO = frompath(+2);
  RewriteLogLevel 3
  echo("Dein Kontostand is null");
  }
   
   
  class lastschrift (tRESTworker) {
  RewriteRule ^/rest(.*) /rest/index.php5?rest=$1 [QSA,L]
  BLZ = frompath(+1);
  KONTO = frompath(+2);
  echo("...");
}
   
   
  $root = newREST(nil,'aqbanking');
  </IfModule>
  $umsatz = newREST($root,'UMSATZ');
 
$lastschrift = newREST($root,'LASTSCHRIFT');
* Es wird also jeder tiefere Zugriff ab "/rest" nicht auf das physikalische Abbild des Dateisystems abgebildet, wie das im normalfall geschieht. Sondern die beliebig formulierte "virtuelle" Pfad-Angabe dem PHP-Parameter "rest" zugewiesen.
* QSA dient dem Anhängen der weiteren Query-Parameter
* L dient dem Ausstieg aus der Regelkette
 
 
* Datei /etc/apache2/httpd.conf
 
  Include /etc/apache2/mod_rewrite.conf
 
* Datei /etc/apache2/sysconfig.d/loadmodule.conf


   
  LoadModule rewrite_module    /usr/lib/apache2-prefork/mod_rewrite.so
* Eine Alternative wäre "echte" verzeichnisse unter Linux zu erstellen (brrrr) in unserem Fall ist das ausreichend da niemand sagt /USER/16/ORT (also ich ja nicht für alle User Unterverzeichnise anlegen (Overkill!!!)) aber so als schnelllösung könnte man ja viele viele Unterverzeichnisse erstellen und danach die vielen vielen index.php5 Dateien vervielfältigt reinstellen!


=== Erstes index.php5 ===


http://blog.astrumfutura.com/archives/245-RESTful-Web-Services-with-Zend-Framework.html
<code>
<HTML><BODY>
<?php
$_GLOBALS = array("rest","f","wC");
foreach ($_GLOBALS as $var) if (isset($_REQUEST[$var])) { $$var = $_REQUEST[$var]; }
echo "\$rest='". $rest . "'<br>\r\n";
echo "\$f='" . $f . "'<br>\r\n";
?>
</BODY>
<HTML>
</code>


== Ausblick ==
== Ausblick ==

Aktuelle Version vom 19. Juni 2008, 14:50 Uhr

Die REST-(RESTful)-Server- und Client-Technologie ist in den OrgaMon integriert.

  • Server

Auf einem definierbaren TCP-Port (Standard=3047) stellt der OrgaMon also diesen Web-Service zur Verfügung. Er lässt sich durch einen normalen Web-Browser ansprechen, eigent sich aber insbesondere für die Automatisierung und zur Kopplung von anderen Geschäftsprozessen an den OrgaMon. Insbesondere die Anbindung des WebShops.

  • Client

Die Buchführung des OrgaMon kann ein externes Konto leicht über einen REST-Service (AqBanking) ansprechen und Buchungen (Umsätze) auslesen. Über den Service lassen sich jedoch auch Lastschriften durchführen. In einer späteren Ausbaustufe können auch Überweisungen durchgeführt werden.


Grundlagen der REST Technologie

Beispiele

  1. Starten die den REST Service: WebShop->Reiter REST->Schalter REST
  2. Benutzen Sie einen Browser, und geben Sie den Rechnernamen des Systems an, auf dem sie eben REST gestartet haben.
  • Beispiel für alle möglichen Datenbank-Tabellen:

http://<RechnerName>:3047/

  • Beispiel für eine einzelne Tabelle

http://<RechnerName>:3047/SORTIMENT

Server in PHP Programmiert

Vorarbeiten im Apache

  • Datei /etc/mod_rewrite.conf
<IfModule mod_rewrite.c>

RewriteEngine   On
RewriteLog      /var/log/apache2/rewrite_log
RewriteLogLevel 3

RewriteRule ^/rest(.*) /rest/index.php5?rest=$1 [QSA,L]

</IfModule>
  • Es wird also jeder tiefere Zugriff ab "/rest" nicht auf das physikalische Abbild des Dateisystems abgebildet, wie das im normalfall geschieht. Sondern die beliebig formulierte "virtuelle" Pfad-Angabe dem PHP-Parameter "rest" zugewiesen.
  • QSA dient dem Anhängen der weiteren Query-Parameter
  • L dient dem Ausstieg aus der Regelkette


  • Datei /etc/apache2/httpd.conf
Include /etc/apache2/mod_rewrite.conf
  • Datei /etc/apache2/sysconfig.d/loadmodule.conf
LoadModule rewrite_module     /usr/lib/apache2-prefork/mod_rewrite.so

Erstes index.php5

<HTML><BODY>
<?php

$_GLOBALS = array("rest","f","wC");
foreach ($_GLOBALS as $var) if (isset($_REQUEST[$var])) { $$var = $_REQUEST[$var]; }


echo "\$rest='". $rest . "'
\r\n"; echo "\$f='" . $f . "'
\r\n"; ?> </BODY> <HTML>

Ausblick

  • Grundsätzliche Erweiterung um einen "Name-Space" genau wie bei XMLRPC, also als erster "Parameter" wird grundsätzlich der Name-Space übertragen.

/<NameSpace>/

  • voraussichtliche Haupt-Einstiege (r/w):

./olap/ Ausführen von OLAP-Statements
./buch/ Besondere Auswertungen für die Buchführung
./shop/ Wrapper
./ecommerce/ kompletter Funktionsumfang des eCommerce-Moduls

f - Parameter

Ein allzeit Verwendbarer Parameter für das Format der Antwort des Servers ist der "f"-Parameter. Dabei gibt es folgdende Werte:

  • f=xml: Die Antwort wird in XML formatiert
  • f=text: Die Antwort wird als csv-Tabelle formatiert
  • f=xls: Es wird direkt mit einem XLS Dokument geantwortet
  • f=text.zip: Die Textantwort wird gezippt übertragen