NEWS
(GELÖST) Syntax API REST Swagger via Curl etc.
-
Ich stehe mit Swagger & der REST API ganz am Anfang.
Aktuell hab ich ein Problem die Syntax zu verstehen und für mich nutzbar umzustellen.
In der vom Anbieter bereitgestellten SWAGGER UI konnte ich mich zurechtfinden, aber in der praktischen Anwendung im IOBROKER checke ich nicht wie ich den Code nutzbar mache.
Ich hatte gehofft ein einfaches (blockly)script mit dem API Aufruf laufen zu lassen, aber die Swagger UI gibt mir zwei Blöcke aus.
curl -X 'GET' \ 'https://connect.paj-gps.de/api/trackerdata/012345/last_minutes?lastMinutes=30&gps=1&wifi=0' \ -H 'accept: application/json' \ -H 'Authorization: Bearer ICHbinEINTOKEN' \ -H 'X-CSRF-TOKEN: '```
und
https://connect.paj-gps.de/api/trackerdata/012345/last_minutes?lastMinutes=30&gps=1&wifi=0
Om oberen CodeBlock sind mehrere Zeilen, die bekomme ich nicht in einen Blockly hinein (oder doch?)
Im unteren fehlen das TOKEN etc. somit ist die zeile auch nicht allein nutzbar.
Als Body wird dann die Information geliefert, aber das kann ich zzt. nur auf der Anbieterseite im SWAGGER UI sehen.
{ "success": [ { "id": "blablabla1234567890", "lat": 53.87654321, "lng": 10.123456, "direction": 36, "dateunix": 1674631777, "battery": 3, "speed": 0, "iddevice": 012345, "steps": 0, "heartbeat": 0, "accuracy": 0, "wifi": null, "note": null },
Falls es interresiert:
Ich habe einen GPS Sender in meinem PKW, den Standort möchte ich über VIS darstellen bzw die Koordinaten weiter verarbeitenWie kann ich das CURL Commando in Blockly nutzen um den Body zurückzubekommen?
-
@moebi sagte in Syntax API REST Swagger via Curl etc.:
Wie kann ich das CURL Commando in Blockly nutzen um den Body zurückzubekommen?
Theoretisch könntest Du mit exec auch curl aufrufen. Aber das wäre ziemlich unnötig, weil JavaScript ja auch wunderbar HTTP-Requests senden kann. Wozu also curl nutzen.
@moebi sagte in Syntax API REST Swagger via Curl etc.:
Om oberen CodeBlock sind mehrere Zeilen
Das ist nicht das Thema. Du könntest die Backslash in jeder Zeile entfernen und alles in eine Zeile schreiben (Bash Grundlagen anschauen). Aber: Blockly wird generell schwierig, weil der request Baustein keine eigenen HTTP-Header annehmen kann. Daher am besten JavaScript:
Per Axios (das Paket wird mit dem JavaScript-Adapter mitinstalliert und kann daher direkt verwendet werden):
const axios = require('axios').default; axios.get('https://connect.paj-gps.de/api/trackerdata/012345/last_minutes?lastMinutes=30&gps=1&wifi=0', { headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ICHbinEINTOKEN' } }).then(response => { if (response.status === 200) { console.log(response.data); } }).catch(err => { console.error(err); });
-
@haus-automatisierung
Juhuu, DANKE.Da hab ich die tatsächlich eine Lücke!
Die Bash Grundlagen sind echt noch nicht verinnerlicht.
(Ich gelobe Besserung )Mit
}).then(response => { if (response.status === 200) { console.log(response.data); setState("0_userdata.0.gpsresponse",response.data) }
habe ich nun meine Antwort im Datenpunkt.
Von dort aus kann ich weiter puzzlen. TOP(Wie kann ich den Fall als GELÖST markieren? Urspüngliche Überschrift editieren?)
-
nur zum üben habe ich mir nun auch n curl script angelegt.
Danke für die Hilfe
-
@moebi sagte in (GELÖST) Syntax API REST Swagger via Curl etc.:
nur zum üben habe ich mir nun auch n curl script angelegt.
Top! Allerdings immer im Hinterkopf behalten, dass das sehr viel umständlicher ist und man mehr Abhängigkeiten hat (curl muss installiert sein) und exec erst in den Einstellungen der JavaScript-Instanz freigeschaltet werden muss.
-
@moebi sagte in Syntax API REST Swagger via Curl etc.:
Wie kann ich das CURL Commando in Blockly nutzen um den Body zurückzubekommen?
Theoretisch könntest Du mit exec auch curl aufrufen. Aber das wäre ziemlich unnötig, weil JavaScript ja auch wunderbar HTTP-Requests senden kann. Wozu also curl nutzen.
@moebi sagte in Syntax API REST Swagger via Curl etc.:
Om oberen CodeBlock sind mehrere Zeilen
Das ist nicht das Thema. Du könntest die Backslash in jeder Zeile entfernen und alles in eine Zeile schreiben (Bash Grundlagen anschauen). Aber: Blockly wird generell schwierig, weil der request Baustein keine eigenen HTTP-Header annehmen kann. Daher am besten JavaScript:
Per Axios (das Paket wird mit dem JavaScript-Adapter mitinstalliert und kann daher direkt verwendet werden):
const axios = require('axios').default; axios.get('https://connect.paj-gps.de/api/trackerdata/012345/last_minutes?lastMinutes=30&gps=1&wifi=0', { headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ICHbinEINTOKEN'
Hallo Moebi,
zum Verständnis:
- oben hinter Trackerdata kommt die Nummer des GPS-Trackers hinein, korrekt ?
- hinter Authorization: was genau wird hier eingegeben ? Meine Zugangsdaten zum Finderportal funktionieren nicht
Gruss
-
@pischleuder die Zugangsdaten sind das Token welches du beginnst wenn du dich via API mit den Login Daten authentifiziert.
Also API token erstellen
Mit token über die API die gewünschten Daten abfragen.Token ist nur begrenzt gültig