Dieses Repo wurde archiviert und wird nicht mehr weitergeführt 📁. Für produktive Projekte mit der Proffix Rest-API empfehlen sich mittlerweile andere Sprachen oder Technologien. Als erpropte, ausgereifte und aktiv unterhaltene Alternativen empfehlen wird die von uns unterhaltenen Wrappers für die Proffix Rest-API auszuprobieren:
Ein effizienter PHP Wrapper für die PROFFIX REST-API
Der Wrapper kann entweder geklont oder via Composer installiert werden.
composer require pitwch/rest-api-wrapper-proffix-php
Autoload RestAPIWrapperProffix class:
require __DIR__ . '/vendor/autoload.php';
use Pitwch\RestAPIWrapperProffix\Client;
Die Konfiguration wird dem Client mitgegeben:
Konfiguration | Beispiel | Bemerkung |
---|---|---|
url | https://myserver.ch:999 | URL der REST-API ohne pxapi/v2/ |
apiDatabase | DEMO | Name der Datenbank |
apiUser | USR | Names des Benutzers |
apiPassword | b62cce2fe18f7a156a9c...0f0d7bd18d9e8a40be2e663017 | SHA256-Hash des Benutzerpasswortes |
apiModule | ADR,STU | Benötigte Module (mit Komma getrennt) |
options | array('key'=>'112a5a90...59028') | Optionen (Details unter Optionen) |
Beispiel:
require __DIR__ . '/vendor/autoload.php';
use Pitwch\RestAPIWrapperProffix\Client;
$pxrest = new Client(
'https://myserver.ch:999',
'DEMO',
'USR',
'b62cce2fe18f7a156a9c719c57bebf0478a3d50f0d7bd18d9e8a40be2e663017',
'ADR,STU',
array('key'=>'112a5a90fe28b23ed2c776562a7d1043957b5b79fad242b10141254b4de59028','limit'=>2));
$adressen = $pxrest->get('ADR/Adresse',array('filter'=>'GeaendertAm>d\'2018-05-17 14:54:56\'','depth'=>1,'fields'=>'AdressNr,Name,GeaendertAm'));;
print_r($adressen);
Optionen sind fakultativ und werden in der Regel nicht benötigt:
Option | Beispiel | Bemerkung |
---|---|---|
key | 112a5a90fe28b...242b10141254b4de59028 | API-Key als SHA256 - Hash (kann auch direkt mitgegeben werden) |
version | v2 | API-Version; Standard = v2 |
api_prefix | /pxapi/ | Prefix für die API; Standard = /pxapi/ |
login_endpoint | PRO/Login | Endpunkt für Login; Standard = PRO/Login |
user_agent | php-wrapper-proffix-restapi | User Agent; Standard = php-wrapper-proffix-restapi |
timeout | 15 | Timeout für Curl in Sekunden; Standard = 15 |
follow_redirects | true | Weiterleitungen der API folgen; Standard = false |
Parameter | Typ | Bemerkung |
---|---|---|
endpoint | string | Endpunkt der PROFFIX REST-API; z.B. ADR/Adresse,STU/Rapporte... |
data | array | Daten (werden automatisch in JSON konvertiert); z.B: array("Name"=>"Demo AG",...) |
parameters | array | Parameter gemäss PROFFIX REST API Docs |
Sonderzeichen in den Parametern müssen gegebenfalls mit Escape-Zeichen verwendet werden, z.B:
//Escape ' with \'
array('filter'=>'GeaendertAm>d\'2018-05-17 14:54:56\'','depth'=>1,'fields'=>'AdressNr,Name,GeaendertAm')
Folgende unterschiedlichen Methoden sind mit dem Wrapper möglich:
//Einfache Abfrage
$pxrest = new Client(...)
$adresse = $pxrest->get("ADR/Adresse/1") //Legt Response als Objects in $adresse ab
$adresse->Name //DEMO AG
/Abfrage mit Parametern
$pxrest = new Client(...)
$adresse = $pxrest->get("ADR/Adresse",array('filter'=>'GeaendertAm>d\'2018-05-17 14:54:56\'','depth'=>1,'fields'=>'AdressNr,Name,GeaendertAm','limit'=>5))
$pxrest = new Client(...)
$data = array("AdressNr"=>1,"Ort"=>"Zürich","PLZ"=>8000,"EMail"=>"[email protected]");
$adresse = $pxrest->put("ADR/Adresse",$data) //Sendet $data an Endpunkt ADR/Adresse
$pxrest = new Client(...)
$data = array("AdressNr"=>1,"Ort"=>"Zürich","PLZ"=>8000,"EMail"=>"[email protected]");
$adresse = $pxrest->post("ADR/Adresse",$data) //Sendet $data an Endpunkt ADR/Adresse
Alle Methoden geben die Response als Array bzw. NULL (z.B. bei DELETE)
Bei Fehlern wird HttpClientException
mit Rückmeldung der PROFFIX REST-API ausgegeben.
Zudem lassen sich Zusatzinformationen zur Response wie folgt ausgeben:
$pxrest = new Client(...)
$adresse = $pxrest->get("ADR/Adresse")
//Zusatzinformationen zum letzten Request
$lastRequest = $pxrest->http->getRequest();
$lastRequest->getUrl(); // Get requested URL (string).
$lastRequest->getMethod(); // Get request method (string).
$lastRequest->getParameters(); // Get request parameters (array).
$lastRequest->getHeaders(); // Get request headers (array).
$lastRequest->getBody(); // Get request body (JSON).
//Zusatzinformationen zur letzten Response
$lastResponse = $pxrest->http->getResponse();
$lastResponse->getCode(); // Response code (int).
$lastResponse->getHeaders(); // Response headers (array).
$lastResponse->getBody(); // Response body (JSON).
Ruft Infos vom Endpunkt PRO/Info ab.
Hinweis: Dieser Endpunkt / Abfrage blockiert keine Lizenz
$pxrest = new Client(...)
//Variante 1: API - Key direkt mitgeben
$info1 = $pxrest->info('112a5a90fe28b23ed2c776562a7d1043957b5b79fad242b10141254b4de59028');
//Variante 2: API - Key aus Options verwenden (sofern dort hinterlegt)
$info2 = $pxrest->info();
Ruft Infos vom Endpunkt PRO/Datenbank ab.
Hinweis: Dieser Endpunkt / Abfrage blockiert keine Lizenz
$pxrest = new Client(...);
//Variante 1: API - Key direkt mitgeben
$datenbank1 = $pxrest->database('112a5a90fe28b23ed2c776562a7d1043957b5b79fad242b10141254b4de59028');
//Variante 2: API - Key aus Options verwenden (sofern dort hinterlegt)
$datenbank2 = $pxrest->database();
- Endpunkte welche Leerschläge enthalten können (z.B. LAG/Artikel/PC 7/Bestand) müssen mit rawurlencode() genutzt werden
Im Ordner /examples finden sich weitere, auskommentierte Beispiele.