Lektion 3.6 Curl
curl gör samma IoT-plattforms-REST-API-anrop som
Postman, men direkt från kommandoraden - perfekt
för snabba tester och för skriptning eller automatisering. Denna lektion
speglar Postman-lektionen med curl.
Exemplen använder två skalvariabler så att du inte behöver upprepa dig:
export YGGIO_URL="beta.yggio.net"
Övning 1 - Hämta en åtkomsttoken
curl -sS -X POST "https://$YGGIO_URL/api/auth/local" \
-H "Content-Type: application/json" \
-d '{"username":"YOUR_USERNAME","password":"YOUR_PASSWORD"}'
Svaret är { "token": "eyJ..." }. Fånga det i en variabel (med jq):
export YGGIO_TOKEN=$(curl -sS -X POST "https://$YGGIO_URL/api/auth/local" \
-H "Content-Type: application/json" \
-d '{"username":"YOUR_USERNAME","password":"YOUR_PASSWORD"}' | jq -r .token)
Alla autentiserade anrop använder därefter headern
Authorization: Bearer $YGGIO_TOKEN.
Övning 2 - Lista dina enheter
curl -sS "https://$YGGIO_URL/api/iotnodes" \
-H "Authorization: Bearer $YGGIO_TOKEN" | jq .
Filtrera till enheter som har ett fält, t.ex. temperature:
curl -sS "https://$YGGIO_URL/api/iotnodes?q=temperature" \
-H "Authorization: Bearer $YGGIO_TOKEN" | jq '.[].name'
Övning 3 - Skicka ett värde till en generisk enhet
Skapa först en generisk enhet med ett secret (se
Lektion 2.3). Denna endpoint autentiserar
med enhetens secret, inte Bearer-token:
curl -sS "https://$YGGIO_URL/http-push/generic?identifier=secret" \
-H "Content-Type: application/json" \
-d '{
"secret": "YOURDEVICESECRET",
"temperature": 22,
"relativeHumidity": 48
}'
Enheten uppdateras i IoT-plattformen.
Övning 4 - Uppdatera en enhet (lägg till/ta bort ett fält)
Använd PUT /api/iotnodes/{_id} med Bearer-token, t.ex. för att lägga
till ett tillfälligt secret (som används för CSV-tidsserieimport) och
sedan ta bort det igen:
# lägg till ett secret
curl -sS -X PUT "https://$YGGIO_URL/api/iotnodes/DEVICE_ID" \
-H "Authorization: Bearer $YGGIO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"secret":"TEMP_SECRET"}'
# ta bort det igen
curl -sS -X PUT "https://$YGGIO_URL/api/iotnodes/DEVICE_ID" \
-H "Authorization: Bearer $YGGIO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"secret":"$unset"}'
Tips: skicka svaren genom
jqför läsbar JSON, och håll din token i en miljövariabel istället för att klistra in den i varje kommando.
Vad du lärde dig
- Hur man hämtar en token (
POST /api/auth/local) och skickar den somAuthorization: Bearer. - Hur man läser (
GET /api/iotnodes), skickar (POST /http-push/generic) och uppdaterar (PUT /api/iotnodes/{_id}) från kommandoraden. - Hur man skriptar dessa anrop med skalvariabler och
jq.
Vart härnäst
- Lektion 3.5 Postman - samma anrop i ett grafiskt gränssnitt.
- Swagger (
https://beta.yggio.net/swagger) - den fullständiga API-referensen. - Nästa lektion: Utveckling av översättare
- den mest avancerade lektionen.