Hm, bei mir funktioniert es heute Morgen... z.B.
curl --digest -su "$XENTRAL_API_USER_SCRIPT_USER:$XENTRAL_API_USER_SCRIPT_PASSWORD" "$XENTRAL_API_URL_V1/belege/auftraege/63"
Wie sieht denn dein Befehl aus? Kann es an irgendwelchen Headern liegen?
(Deine Beispiel-Routen habe ich nicht ausprobiert, bzw. kommt da bei mir Missing Permission, weil nicht freigegeben.)
Danke dir.
Ich nutze den PHP Client aus der Doku, habe auch nochmal geschaut, ob da alles passt.
Mit deinem Command bekomme ich auch den Fehler Route Not Found, egal welchen Endpunkt ich nehme
Vllt ist was bei einem Update schiefgegangen? Ist bei dir Xentral in der Cloud oder selbst-gehosted? Bei Cloud würde ich direkt ein Ticket anlegen.
Hallo,
das Problem hatten wir auch. Du kannst Dir damit behelfen, dass Du für die API Aufrufe die Failsafe-URLs verwendest:
https://mydomain.xyz/api/index.php?path=/v1/artikelhttps://mydomain.xyz/api/index.php?path=/v1/adressenhttps://mydomain.xyz/api/index.php?path=/v2/adressen
Also mit api/index.php?path=... statt /api/v1/...
Hi zusammen,
Dear Thread ist zwar schon ziemlich alt, das Thema hatte uns aber auch gerade beschäftigt.
Die unter https://update.xentral.biz/apidoc/docs203.html#webserver_konfiguration angegebene Beispiel-Konfiguration für NGINX scheint einen Fehler in der rewrite-rule zu haben.
Lösung für uns:
Anstelle von
location @xentral_api {
rewrite ^/api/(.*)$ /api/index.php/$1 last;
}
muss das heißen
location @xentral_api {
rewrite ^/api/(.*)$ /api/index.php?path=/$1 last;
}
Wie bin ich drauf gekommen:
in der server-direktive in der Nginx Config (z.B. /etc/nginx/sites-available/default) die beiden Zeilen
error_log /var/log/nginx/error.log notice;
rewrite_log on;
hinzufügen (bzw. die entsprechenden Einträge anpassen, falls sie schon existieren).
Nginx Config neu laden (zB über sudo service nginx restart)
Damit werden die ausgeführten Rewrites im error.log ausgegeben (Log-Level notice).
Dort sieht man dann schön was er aus dem request macht.
Zum Beispiel:
2023/01/19 09:56:41 1notice] 26197#26197: *36 "^/api/(.*)$" matches "/api/v1/belege/auftraege/12345", client: 172.31.9.xxx, server: _, request: "GET /api/v1/belege/auftraege/12345 HTTP/1.1", host: "wawi.pumperlgsund-bio.de"
2023/01/19 09:56:41 1notice] 26197#26197: *36 rewritten data: "/api/index.php/v1/belege/auftraege/12345", args: "", client: 172.31.9.xxx, server: _, request: "GET /api/v1/belege/auftraege/12345 HTTP/1.1", host: "mein-wawi-system.de"
Die korrekte URL sollte aber lauten
/api/index.php?path=/v1/belege/auftraege/12345
und das ist genau der Teil, den wir oben in die rewrite rule einfügen.
Denkt dran, die beiden Zeilen für das error-logging wieder raus zu nehmen und die nginx config wieder neu zu laden, sonst gibt’s bald Probleme mit dem Platten-Platz :)