GET /api/history/temperature/samples/?page=1&pageSize=2&direct=desc
Pobiera stronę zsynchronizowanych próbek historii dla wszystkich czterech kanałów.
Uwierzytelnianie: Bearer.
Parametry zapytania
Dział zatytułowany „Parametry zapytania”| Parametr | Typ | Wymagane | Domyślnie | Opis |
|---|---|---|---|---|
page | liczba | nie* | — | Numer strony, począwszy od 1. Używany tylko w pierwszym żądaniu serii. Ignorowany, jeśli podano cursor. |
pageSize | liczba | tak | — | Liczba próbek na stronę. Prawidłowy zakres: 1..20. |
direct | ciąg znaków | nie | "desc" | Kierunek sortowania: "asc" — od najstarszych do najnowszych; "desc" — od najnowszych do najstarszych. |
cursor | liczba | nie* | — | Kursor służący do kontynuowania zapytania. Zobacz poniżej. |
*Wymagany jest parametr page albo cursor.
Kursor zapewnia stabilną, sekwencyjną paginację bez duplikatów ani luk.
- Pierwsze żądanie w serii: klient wysyła
page=1i pomijacursor. Serwer rozpoczyna zapytanie odlastSequence(desc) albooldestSequence(asc). - Odpowiedź zawiera
nextCursor, czyli pozycję, od której należy kontynuować. - Kolejne żądania: klient wysyła
cursorz poprzedniej odpowiedzi; parametrpagejest ignorowany. - Koniec zapytania:
nextCursor: nulloznacza, że nie ma więcej dostępnych danych. - Nowa seria (podczas przechodzenia do innej strony interfejsu): klient resetuje
cursori ponownie rozpoczyna odpage=1.
Odpowiedź 200
Dział zatytułowany „Odpowiedź 200”{ "nextCursor": 1234, "periodSec": 5, "lastSequence": 1236, "samples": [ { "sequence": 1236, "channels": [ { "state": "normal", "temperature": 72.5 }, { "state": "normal", "temperature": 72.7 }, { "state": "invalid", "temperature": null }, { "state": "normal", "temperature": 68.2 } ] }, { "sequence": 1235, "channels": [ { "state": "normal", "temperature": 72.4 }, { "state": "normal", "temperature": 72.6 }, { "state": "invalid", "temperature": null }, { "state": "normal", "temperature": 68.1 } ] } ], "sampleCount": 2}Pola odpowiedzi
Dział zatytułowany „Pola odpowiedzi”| Pole | Typ | Opis |
|---|---|---|
nextCursor | liczba|null | Kursor dla następnego żądania. null, jeśli osiągnięto koniec zapytania. |
periodSec | liczba | Interwał rejestrowania historii w sekundach. |
lastSequence | liczba | Bieżący monotoniczny numer sekwencyjny w chwili wysłania żądania. |
samples | tablica | Próbki w kolejności określonej przez direct (0..pageSize elementów). |
sampleCount | liczba | Liczba próbek w bieżącym zestawie wyników. |
Jeśli nie ma więcej dostępnych danych, odpowiedź zawiera sampleCount: 0, samples: []
oraz nextCursor: null. Nie jest to błąd.
samples[]
Dział zatytułowany „samples[]”| Pole | Typ | Opis |
|---|---|---|
sequence | liczba | Numer sekwencyjny tej próbki. |
channels | tablica | 4 elementy (CH1..CH4). |
samples[].channels[]
Dział zatytułowany „samples[].channels[]”| Pole | Typ | Opis |
|---|---|---|
state | ciąg znaków | "normal", "open", "short", "invalid" |
temperature | liczba|null | Temperatura (null, jeśli wartość jest nieprawidłowa) |
Scenariusz: wypełnienie okna interfejsu 60 próbkami (3 żądania po 20)
Dział zatytułowany „Scenariusz: wypełnienie okna interfejsu 60 próbkami (3 żądania po 20)”GET /api/history/temperature/samples/?page=1&pageSize=20&direct=desc→ { "nextCursor": 1216, "sampleCount": 20, "samples": [...] }
GET /api/history/temperature/samples/?cursor=1216&pageSize=20&direct=desc→ { "nextCursor": 1196, "sampleCount": 20, "samples": [...] }
GET /api/history/temperature/samples/?cursor=1196&pageSize=20&direct=desc→ { "nextCursor": null, "sampleCount": 20, "samples": [...] }Pierwsze żądanie używa page=1; kolejne używają parametru cursor z poprzedniej odpowiedzi.