Page tree
Skip to end of metadata
Go to start of metadata


 

Mit der Veröffentlichung von TecArt Version 4.10 wird diese Version des REST Webservice nicht weiterentwickelt, steht aber zu Zwecken der Abwärtskompatibilität weiter zur Verfügung. 

With the release of TecArt version 4.10 this version of REST Webservice will no longer receive further development, yet will stay available for reasons of downward compatibility.

Module:

1. Nutzen der TecArt-System REST-API

Mit der REST-API kann man einfach die Funktionen über einen HTTP-Aufruf einer URL steuern, um Daten aus dem TecArt-System zu holen oder in das System zu schreiben. Die einkommenden Daten können in den Formaten XML, JSON oder als serialisierte Zeichenketten geliefert werden.

Zurückgeliefert werden die Daten als XML, JSON-, serialisierte Zeichenkette oder ein Textstring mit einer Fehlermeldung.

  • Erforderliche REST Input Parameters:

ParameterBeschreibung
methodName der aufgerufenen Methode.
request_typeData format der input parameters (JSON, XML, serialize). Wird nur beim POST Aufruf benötigt.
response_typeErwünschte data format für das Ergebnis (JSON, XML, serialize).
paramsEingabedata
  • Format des XML Inputs:

Wenn Sie XML als Format für die Eingabe der Daten benutzen möchten, verwenden Sie bitte folgende XML Vorlage:

<?xml version='1.0' encoding='utf-8'?>
<elements>
   <params>
     <param1>...</param1>
     <param2>...</param2>
   </params>
</elements>


  • TecArt-System REST-API unterstützt GET und POST Requests:

Alle Funktionen unterstützen POST Requests. GET Requests sollten nur bei den Funktionen verwendet werden, welche Daten aus dem TecArt-System lesen.

Beispiel 1: Anmelden am TecArt-System. Benutzt GET Request.

Beim Aufruf wird die Session-ID im JSON-Format zurückgeliefert.

<?php
 
/* Achtung: beim Aufruft als GET Request müssen die Input Daten unformatiert übergeben werden. 
  * Deshalb ist es nicht nötig, 'request_type' zu setzen
  */
$url = "http://hostname/dirname/rest/index.php/logon?method=crmLogin&response_type=JSON&username=testuser&password=testpassword";
 
$response = file_get_contents($url);
 
$session_id = json_decode($response);
echo "Session ID: " . $session_id;

Beispiel 2: Anmelden am TecArt-System. Benutzt POST Request.

Die Login-Daten werden im XML-Format übergeben und beim Aufruf wird die Session-ID im Serialize-Format zurückgeliefert.

<?php
 
$xml =
	"<?xml version='1.0' encoding='utf-8'?><br>".
	"<elements><br>".
	"<params><br>".
	"<username>testuser</username><br>".
	"<password>testpassword</password><br>".
	"</params><br>".
	"</elements>";
 
$args = array(
	'request_type'  => 'XML',
	'response_type' => 'serialize',
	'method'        => 'crmLogin',
	'params'        => $xml
);
 
$curl = curl_init('http://hostname/dirname/rest/index.php/logon');
 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
 
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($args));
 
$response = curl_exec( $curl ); 
 
curl_close( $curl );
 
$session_id = unserialize($response);
echo "Session ID: " . $session_id;

1.1. Das TecArt-System REST-API Objekt

Wenn Sie PHP mit der Version >= 5.0 für die Implementierung der REST-API verwenden, wird empfohlen, unsere Crm_rest_api zu benutzen. Es vereinfacht und ermöglicht eine übersichtlichere Implementierung. Sie können die REST-Methoden wie Methoden der Klasse crm_rest_api aufrufen.

  • Wenn ein Fehler auftritt, wird eine Exception mit Fehlermeldung geworfen.

Beispiel 1: Anmelden am TecArt-System. Beim Aufruf wird die Session-ID zurückgeliefert.

<?php
 
// include the crm_rest_api PHP file
include_once 'crm_rest_api.php';
 
try {
	// URL zu dem gewünschten Modul (Logon)
	$logon	= new crm_rest_api("http://hostname/dirname/rest/index.php/logon");
 	$params = array('username' => 'testuser', 'password' => 'testpassword');
 
	// Aufruf zur crmLogin Method.
	$session_id = $logon->crmLogin($params);
 
	echo '**Session ID:**'.$session_id;
}
catch (Exception $e) {
	echo 'Exception abgefangen: ' .$e->getMessage(). "\n";
}

Beispiel 2: Hole alle Termine vom Benutzer mit der ID = 4 und für das Jahr 2011.

<?php
 
include_once 'crm_rest_api.php';
 
try {
	// Session ID für den HTTP Aufruf holen.
	$logon		= new crm_rest_api("http://hostname/dirname/rest/index.php/logon");
	$params		= array('username' => 'testuser', 'password' => 'testpassword');
	$session_id	= $logon->crmLogin($params);
 
	// Alle Termine für den User mit ID:4 und für das Jahr 2011 holen
	$dates	= new crm_rest_api("http://hostname/dirname/rest/index.php/dates");
	$params	= array(
		'session_id'	=> $session_id,
		'userid'		=> 4,
		'day'			=> 0,
		'month'			=> 0,
		'year'			=> 2011
	);
 
	$result = $dates->crmgetAppointments($params);
 
	if(is_object($result)) { 
		// listing the appointments subject
		$appointments = get_object_vars($result);
 
		foreach($appointments as $appointment) {
			echo $appointment->subject . "<br>";
		}
	}
	else {
		echo 'Es wurde kein Termin für den Zeitraum gefunden!';
	}
}
catch (Exception $e) {
	echo 'Exception abgefangen: ' .$e->getMessage(). "\n";
}

2. Apache für JavaScript-Cross-Domain-Zugriffe konfigurieren

Um Browsern mit Hilfe von JavaScript anderer Webseiten den Zugriff auf die REST- und SOAP-Webservices zu gestatten, muss in der Apache-Konfiguration ein Response-Header für Access-Control-Allow-Origin gesetzt werden.

<VirtualHost *:80>
[...]
        <Directory /var/www/crm/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                Header set Access-Control-Allow-Origin $$URSPRUNG$$
        </Directory>
[...]
</VirtualHost>


Der $$URSPRUNG$$ muss eine valide Ursprungsdefinition enthalten.

Ausserdem muss das Apache-Module mod_headers geladen und anschließend der Apache neugestartet werden:

[root@crmsrv /]# a2enmod headers
[root@crmsrv /]# /etc/init.d/apache2 restart



  • No labels