|
1 | | - |
2 | | - |
3 | 1 | # PHP Wrapper für PROFFIX REST-API |
4 | 2 |
|
5 | | -Ein effizienter PHP Wrapper für die PROFFIX REST-API |
| 3 | +Ein effizienter PHP Wrapper für die PROFFIX REST-API. |
6 | 4 |
|
7 | 5 |  |
8 | 6 |
|
9 | | -### Installation |
10 | | -Der Wrapper kann entweder geklont oder via [Composer](https://getcomposer.org) installiert werden. |
| 7 | +## Installation |
| 8 | + |
| 9 | +Der Wrapper kann via [Composer](https://getcomposer.org) installiert werden. |
11 | 10 |
|
12 | 11 | ```php |
13 | 12 | composer require pitwch/rest-api-wrapper-proffix-php |
14 | 13 | ``` |
15 | 14 |
|
| 15 | +## Konfiguration |
16 | 16 |
|
17 | | -#### Variante 1: Verwendung mit Composer (empfohlen) |
18 | | - |
| 17 | +### Initialisierung |
19 | 18 |
|
20 | | -Autoload RestAPIWrapperProffix class: |
| 19 | +Autoload der `RestAPIWrapperProffix` Klasse: |
21 | 20 |
|
22 | 21 | ```php |
23 | 22 | require __DIR__ . '/vendor/autoload.php'; |
24 | 23 |
|
25 | 24 | use Pitwch\RestAPIWrapperProffix\Client; |
26 | | - |
27 | 25 | ``` |
28 | 26 |
|
29 | | - |
30 | | -#### Konfiguration |
31 | | - |
32 | 27 | Die Konfiguration wird dem Client mitgegeben: |
33 | 28 |
|
34 | 29 | | Konfiguration | Beispiel | Bemerkung | |
35 | 30 | |------------------|----------------------------------------------------------------------------------|--------------------------------------------------| |
36 | | -| url | https://myserver.ch:999 | URL der REST-API **ohne pxapi/v2/** | |
37 | | -| apiDatabase | DEMO | Name der Datenbank | |
38 | | -| apiUser | USR | Names des Benutzers | |
39 | | -| apiPassword | b62cce2fe18f7a156a9c...0f0d7bd18d9e8a40be2e663017 | SHA256-Hash des Benutzerpasswortes | |
40 | | -| apiModule | ADR,STU | Benötigte Module (mit Komma getrennt) | |
41 | | -| options | array('key'=>'112a5a90...59028') | Optionen (Details unter Optionen) | |
| 31 | +| url | `https://myserver.ch:999` | URL der REST-API **ohne pxapi/v2/** | |
| 32 | +| apiDatabase | `DEMO` | Name der Datenbank | |
| 33 | +| apiUser | `USR` | Name des Benutzers | |
| 34 | +| apiPassword | `b62cce2fe18f7a156a9c...` | SHA256-Hash des Benutzerpasswortes | |
| 35 | +| apiModule | `ADR,STU` | Benötigte Module (mit Komma getrennt) | |
| 36 | +| options | `array('key'=>'112a5a90...')` | Optionen (Details unter Optionen) | |
42 | 37 |
|
| 38 | +### Beispiel für die Initialisierung |
43 | 39 |
|
44 | | -Beispiel: |
45 | 40 | ```php |
46 | | - |
47 | 41 | require __DIR__ . '/vendor/autoload.php'; |
48 | 42 |
|
49 | 43 | use Pitwch\RestAPIWrapperProffix\Client; |
50 | 44 |
|
51 | | -$pxrest = new Client( |
| 45 | +$pxrest = new Client( |
52 | 46 | 'https://myserver.ch:999', |
53 | 47 | 'DEMO', |
54 | 48 | 'USR', |
55 | 49 | 'b62cce2fe18f7a156a9c719c57bebf0478a3d50f0d7bd18d9e8a40be2e663017', |
56 | 50 | 'ADR,STU', |
57 | | - array('key'=>'112a5a90fe28b23ed2c776562a7d1043957b5b79fad242b10141254b4de59028','limit'=>2)); |
58 | | -$adressen = $pxrest->get('ADR/Adresse',array('filter'=>'GeaendertAm>d\'2018-05-17 14:54:56\'','depth'=>1,'fields'=>'AdressNr,Name,GeaendertAm'));; |
| 51 | + ['key'=>'112a5a90fe28b23ed2c776562a7d1043957b5b79fad242b10141254b4de59028','limit'=>2] |
| 52 | +); |
| 53 | + |
| 54 | +$adressen = $pxrest->get('ADR/Adresse', ['filter'=>'GeaendertAm>d\'2018-05-17 14:54:56\'', 'depth'=>1, 'fields'=>'AdressNr,Name,GeaendertAm']); |
59 | 55 | print_r($adressen); |
60 | 56 | ``` |
61 | | -### Optionen |
| 57 | + |
| 58 | +## Optionen |
62 | 59 |
|
63 | 60 | Optionen sind **fakultativ** und werden in der Regel nicht benötigt: |
64 | 61 |
|
65 | | -| Option | Beispiel | Bemerkung | |
66 | | -|------------------|------------------------------------------------------------------|----------------------------------------------------------------| |
67 | | -| key | 112a5a90fe28b...242b10141254b4de59028 | API-Key als SHA256 - Hash (kann auch direkt mitgegeben werden) | |
68 | | -| version | v2 | API-Version; Standard = v2 | |
69 | | -| api_prefix | /pxapi/ | Prefix für die API; Standard = /pxapi/ | |
70 | | -| login_endpoint | PRO/Login | Endpunkt für Login; Standard = PRO/Login | |
71 | | -| user_agent | php-wrapper-proffix-restapi | User Agent; Standard = php-wrapper-proffix-restapi | |
72 | | -| timeout | 15 | Timeout für Curl in Sekunden; Standard = 15 | |
73 | | -| follow_redirects | true | Weiterleitungen der API folgen; Standard = false | |
| 62 | +| Option | Beispiel | Bemerkung | |
| 63 | +|------------------|----------------------------------------|----------------------------------------------------------------| |
| 64 | +| key | `112a5a90fe28b...` | API-Key als SHA256 - Hash (kann auch direkt mitgegeben werden) | |
| 65 | +| version | `v2` | API-Version; Standard = v2 | |
| 66 | +| api_prefix | `/pxapi/` | Prefix für die API; Standard = /pxapi/ | |
| 67 | +| login_endpoint | `PRO/Login` | Endpunkt für Login; Standard = PRO/Login | |
| 68 | +| user_agent | `php-wrapper-proffix-restapi` | User Agent; Standard = php-wrapper-proffix-restapi | |
| 69 | +| timeout | `15` | Timeout für Curl in Sekunden; Standard = 15 | |
| 70 | +| follow_redirects | `true` | Weiterleitungen der API folgen; Standard = false | |
74 | 71 |
|
75 | | -#### Methoden |
| 72 | +## Methoden |
76 | 73 |
|
| 74 | +### Allgemeine Methoden (`get`, `put`, `post`, `delete`) |
77 | 75 |
|
78 | 76 | | Parameter | Typ | Bemerkung | |
79 | 77 | |------------|--------|----------------------------------------------------------------------------------------------------------| |
80 | | -| endpoint | string | Endpunkt der PROFFIX REST-API; z.B. ADR/Adresse,STU/Rapporte... | |
81 | | -| data | array | Daten (werden automatisch in JSON konvertiert); z.B: array("Name"=>"Demo AG",...) | |
82 | | -| parameters | array | Parameter gemäss [PROFFIX REST API Docs](http://www.proffix.net/Portals/0/content/REST%20API/index.html) | |
83 | | - |
| 78 | +| endpoint | `string` | Endpunkt der PROFFIX REST-API; z.B. `ADR/Adresse`, `STU/Rapporte`... | |
| 79 | +| data | `array` | Daten (werden automatisch in JSON konvertiert); z.B: `["Name"=>"Demo AG",...]` | |
| 80 | +| parameters | `array` | Parameter gemäss [PROFFIX REST API Docs](http://www.proffix.net/Portals/0/content/REST%20API/index.html) | |
84 | 81 |
|
85 | 82 | *Sonderzeichen in den Parametern müssen gegebenfalls mit Escape-Zeichen verwendet werden, z.B:* |
86 | 83 |
|
87 | 84 | ```php |
88 | | -//Escape ' with \' |
89 | | -array('filter'=>'GeaendertAm>d\'2018-05-17 14:54:56\'','depth'=>1,'fields'=>'AdressNr,Name,GeaendertAm') |
| 85 | +// Escape ' with \' |
| 86 | +$params = ['filter' => 'GeaendertAm>d\'2018-05-17 14:54:56\'', 'depth' => 1, 'fields' => 'AdressNr,Name,GeaendertAm']; |
| 87 | +$pxrest->get('ADR/Adresse', $params); |
90 | 88 | ``` |
91 | 89 |
|
| 90 | +#### Get / Query |
92 | 91 |
|
93 | | -Folgende unterschiedlichen Methoden sind mit dem Wrapper möglich: |
94 | | - |
| 92 | +```php |
| 93 | +// Einfache Abfrage |
| 94 | +$adresse = $pxrest->get("ADR/Adresse/1"); |
| 95 | +echo $adresse->Name; // DEMO AG |
95 | 96 |
|
| 97 | +// Abfrage mit Parametern |
| 98 | +$params = ['filter'=>'GeaendertAm>d\'2018-05-17 14:54:56\'','depth'=>1,'fields'=>'AdressNr,Name,GeaendertAm','limit'=>5]; |
| 99 | +$adressen = $pxrest->get("ADR/Adresse", $params); |
| 100 | +``` |
96 | 101 |
|
97 | | -##### Get / Query |
| 102 | +#### Put / Update |
98 | 103 |
|
99 | 104 | ```php |
100 | | -//Einfache Abfrage |
101 | | -$pxrest = new Client(...) |
102 | | -$adresse = $pxrest->get("ADR/Adresse/1") //Legt Response als Objects in $adresse ab |
103 | | -$adresse->Name //DEMO AG |
104 | | - |
105 | | -/Abfrage mit Parametern |
106 | | -$pxrest = new Client(...) |
107 | | -$adresse = $pxrest->get("ADR/Adresse",array('filter'=>'GeaendertAm>d\'2018-05-17 14:54:56\'','depth'=>1,'fields'=>'AdressNr,Name,GeaendertAm','limit'=>5)) |
108 | | - |
| 105 | +$data = ["AdressNr"=>1, "Ort"=>"Zürich", "PLZ"=>8000, "EMail"=>"test@test.com"]; |
| 106 | +$adresse = $pxrest->put("ADR/Adresse", $data); |
109 | 107 | ``` |
110 | 108 |
|
111 | | - |
112 | | -##### Put / Update |
| 109 | +#### Post / Create |
113 | 110 |
|
114 | 111 | ```php |
115 | | -$pxrest = new Client(...) |
116 | | -$data = array("AdressNr"=>1,"Ort"=>"Zürich","PLZ"=>8000,"EMail"=>"test@test.com"); |
117 | | -$adresse = $pxrest->put("ADR/Adresse",$data) //Sendet $data an Endpunkt ADR/Adresse |
| 112 | +$data = ["Ort"=>"Zürich", "PLZ"=>8000, "EMail"=>"test@test.com"]; |
| 113 | +$neueAdresse = $pxrest->post("ADR/Adresse", $data); |
118 | 114 | ``` |
119 | 115 |
|
120 | | -##### Post / Create |
| 116 | +#### Delete |
121 | 117 |
|
122 | 118 | ```php |
123 | | -$pxrest = new Client(...) |
124 | | -$data = array("AdressNr"=>1,"Ort"=>"Zürich","PLZ"=>8000,"EMail"=>"test@test.com"); |
125 | | -$adresse = $pxrest->post("ADR/Adresse",$data) //Sendet $data an Endpunkt ADR/Adresse |
| 119 | +$response = $pxrest->delete("ADR/Adresse/42"); |
126 | 120 | ``` |
127 | 121 |
|
| 122 | +### Spezifische Methoden |
128 | 123 |
|
129 | | -##### Response / Antwort |
| 124 | +#### `getList(int $listenr, array $body = [])` |
130 | 125 |
|
131 | | -Alle Methoden geben die Response als Array bzw. NULL (z.B. bei DELETE) |
132 | | -Bei Fehlern wird `HttpClientException` mit Rückmeldung der PROFFIX REST-API ausgegeben. |
| 126 | +Generiert eine PROFFIX-Liste (z.B. ein PDF) und gibt das Ergebnis als `Response`-Objekt zurück, welches den rohen Dateiinhalt enthält. |
133 | 127 |
|
134 | | -Zudem lassen sich Zusatzinformationen zur Response wie folgt ausgeben: |
| 128 | +| Parameter | Typ | Bemerkung | |
| 129 | +|-----------|----------|------------------------------------------------------------------------------------------------------------------------------------------------| |
| 130 | +| `$listenr`| `int` | Die `ListeNr` der Liste, die generiert werden soll. | |
| 131 | +| `$body` | `array` | (Optional) Ein assoziatives Array mit Parametern für die Listengenerierung. **Wichtig:** Es muss mindestens ein leeres JSON-Objekt (`{}`) gesendet werden. | |
135 | 132 |
|
136 | | -```php |
137 | | -$pxrest = new Client(...) |
138 | | -$adresse = $pxrest->get("ADR/Adresse") |
139 | | - |
140 | | -//Zusatzinformationen zum letzten Request |
141 | | -$lastRequest = $pxrest->http->getRequest(); |
142 | | -$lastRequest->getUrl(); // Get requested URL (string). |
143 | | -$lastRequest->getMethod(); // Get request method (string). |
144 | | -$lastRequest->getParameters(); // Get request parameters (array). |
145 | | -$lastRequest->getHeaders(); // Get request headers (array). |
146 | | -$lastRequest->getBody(); // Get request body (JSON). |
| 133 | +*Beispiel:* |
147 | 134 |
|
| 135 | +```php |
| 136 | +$listeNr = 1029; // Beispiel-ID für ADR_Adressliste.repx |
| 137 | +$pdfResponse = $pxrest->getList($listeNr); |
148 | 138 |
|
149 | | -//Zusatzinformationen zur letzten Response |
150 | | -$lastResponse = $pxrest->http->getResponse(); |
151 | | -$lastResponse->getCode(); // Response code (int). |
152 | | -$lastResponse->getHeaders(); // Response headers (array). |
153 | | -$lastResponse->getBody(); // Response body (JSON). |
| 139 | +if ($pdfResponse->getCode() === 200) { |
| 140 | + file_put_contents('Adressliste.pdf', $pdfResponse->getBody()); |
| 141 | + echo "Liste erfolgreich als Adressliste.pdf gespeichert."; |
| 142 | +} |
154 | 143 | ``` |
155 | 144 |
|
| 145 | +## Spezielle Endpunkte |
156 | 146 |
|
157 | | -#### Spezielle Endpunkte |
158 | | - |
| 147 | +### Info |
159 | 148 |
|
160 | | -##### Info |
| 149 | +Ruft Infos vom Endpunkt `PRO/Info` ab. |
161 | 150 |
|
162 | | -Ruft Infos vom Endpunkt **PRO/Info** ab. |
163 | | - |
164 | | -*Hinweis: Dieser Endpunkt / Abfrage blockiert keine Lizenz* |
| 151 | +*Hinweis: Dieser Endpunkt / Abfrage blockiert keine Lizenz.* |
165 | 152 |
|
166 | 153 | ```php |
167 | | -$pxrest = new Client(...) |
168 | | - |
169 | | -//Variante 1: API - Key direkt mitgeben |
| 154 | +// Variante 1: API-Key direkt mitgeben |
170 | 155 | $info1 = $pxrest->info('112a5a90fe28b23ed2c776562a7d1043957b5b79fad242b10141254b4de59028'); |
171 | 156 |
|
172 | | -//Variante 2: API - Key aus Options verwenden (sofern dort hinterlegt) |
| 157 | +// Variante 2: API-Key aus Options verwenden (sofern dort hinterlegt) |
173 | 158 | $info2 = $pxrest->info(); |
174 | 159 | ``` |
175 | 160 |
|
176 | | -##### Datenbank |
| 161 | +### Datenbank |
| 162 | + |
| 163 | +Ruft Infos vom Endpunkt `PRO/Datenbank` ab. |
| 164 | + |
| 165 | +```php |
| 166 | +$dbInfo = $pxrest->database(); |
| 167 | +``` |
| 168 | + |
| 169 | +## Response / Antwort |
177 | 170 |
|
178 | | -Ruft Infos vom Endpunkt **PRO/Datenbank** ab. |
| 171 | +Alle Methoden geben die Response als Array bzw. `NULL` (z.B. bei `DELETE`) zurück. Bei Fehlern wird eine `HttpClientException` mit der Rückmeldung der PROFFIX REST-API geworfen. |
179 | 172 |
|
180 | | -*Hinweis: Dieser Endpunkt / Abfrage blockiert keine Lizenz* |
| 173 | +Zudem lassen sich Zusatzinformationen zur letzten Response wie folgt ausgeben: |
| 174 | + |
| 175 | +### Letzter Request |
181 | 176 |
|
182 | 177 | ```php |
183 | | -$pxrest = new Client(...); |
| 178 | +$lastRequest = $pxrest->http->getRequest(); |
| 179 | +$lastRequest->getUrl(); // Get requested URL (string). |
| 180 | +$lastRequest->getMethod(); // Get request method (string). |
| 181 | +$lastRequest->getParameters(); // Get request parameters (array). |
| 182 | +$lastRequest->getHeaders(); // Get request headers (array). |
| 183 | +$lastRequest->getBody(); // Get request body (JSON). |
| 184 | +``` |
184 | 185 |
|
185 | | -//Variante 1: API - Key direkt mitgeben |
186 | | -$datenbank1 = $pxrest->database('112a5a90fe28b23ed2c776562a7d1043957b5b79fad242b10141254b4de59028'); |
187 | | - |
188 | | -//Variante 2: API - Key aus Options verwenden (sofern dort hinterlegt) |
189 | | -$datenbank2 = $pxrest->database(); |
190 | | - ``` |
191 | | -### Ausnahmen / Spezialfälle |
| 186 | +### Letzte Response |
| 187 | + |
| 188 | +```php |
| 189 | +$lastResponse = $pxrest->http->getResponse(); |
| 190 | +$lastResponse->getCode(); // Response code (int). |
| 191 | +$lastResponse->getHeaders(); // Response headers (array). |
| 192 | +$lastResponse->getBody(); // Response body (JSON). |
| 193 | +``` |
192 | 194 |
|
193 | | -* Endpunkte welche Leerschläge enthalten können (z.B. LAG/Artikel/PC 7/Bestand) müssen mit rawurlencode() genutzt werden |
| 195 | +## Ausnahmen / Spezialfälle |
194 | 196 |
|
195 | | -### Weitere Beispiele |
| 197 | +* Endpunkte, welche Leerschläge enthalten (z.B. `LAG/Artikel/PC 7/Bestand`), müssen mit `rawurlencode()` genutzt werden. |
196 | 198 |
|
197 | | -Im Ordner [/examples](https://github.com/pitwch/php-wrapper-proffix-restapi/tree/master/examples) finden sich weitere, |
198 | | -auskommentierte Beispiele. |
| 199 | +## Weitere Beispiele |
199 | 200 |
|
| 201 | +Im Ordner [/examples](https://github.com/pitwch/php-wrapper-proffix-restapi/tree/master/examples) finden sich weitere auskommentierte Beispiele. |
200 | 202 |
|
201 | | -# Weitere Wrapper für die Proffix Rest-API |
| 203 | +## Weitere Wrapper für die Proffix Rest-API |
202 | 204 |
|
203 | | -- [Golang Wrapper für die Proffix Rest-API](https://github.com/pitwch/go-wrapper-proffix-restapi) :link: |
204 | | -- [Dart Wrapper für die Proffix Rest-API](https://github.com/pitwch/dart_proffix_rest) :link: |
| 205 | +* [Golang Wrapper für die Proffix Rest-API](https://github.com/pitwch/go-wrapper-proffix-restapi) |
| 206 | +* [Dart Wrapper für die Proffix Rest-API](https://github.com/pitwch/dart_proffix_rest) |
0 commit comments