Praca z danymi w interfejsie Google Health API to przede wszystkim cykl synchronizowania danych między magazynem danych interfejsu Google Health API w chmurze a własną aplikacją lub magazynem danych backendu. Ten cykl może jednak przyjmować różne formy w zależności od wielu czynników:
- Czy zapisujesz dane w interfejsie Google Health API? Czy tylko je odczytujesz? Czy robisz obie te rzeczy?
- Czy Twój magazyn danych jest lokalny w aplikacji lub na urządzeniu? Czy znajduje się w Twojej chmurze?
- Czy musisz synchronizować dane interfejsu Google Health API między aplikacją użytkownika a urządzeniem do noszenia? Jak często synchronizujesz urządzenia?
- Jakie typy danych przetwarzasz? Podstawowe liczby? Jednostki miary? Serie z różnymi częstotliwościami próbkowania?
- Czy planujesz odczytywać dane, gdy aplikacja działa w tle?
- Czy planujesz pracować z danymi historycznymi zarejestrowanymi przed uzyskaniem przez aplikację uprawnień użytkownika?
Aby dowiedzieć się, jak to wszystko działa, zapoznaj się z cyklem życia synchronizacji interfejsu Google Health API. Istnieją 2 wersje tego cyklu życia: standardowa (odczyt i zapis) oraz tylko do odczytu.
Standardowy cykl życia synchronizacji
Integracja z interfejsem Google Health API oznacza kopiowanie danych do aplikacji lub magazynu danych backendu. Aby ułatwić korzystanie z tej dokumentacji, będziemy nazywać ten magazyn danych magazynem danych dewelopera.
„Kopiowanie” może tu zastępować dowolną dyskretną czynność, np. odczytywanie z interfejsu Google Health API (kopiowanie do magazynu danych dewelopera) lub zapisywanie w interfejsie Google Health API (kopiowanie do interfejsu Google Health API). Powtarzanie tych czynności w określonej kolejności to cykl życia synchronizacji.
Rysunek 1 przedstawia standardowy cykl życia synchronizacji, który obejmuje operacje odczytu i zapisu, bez względu na wcześniej wspomniane czynniki.
Zapis
- Przygotuj nowe dane do zapisu – przenieś dane z urządzenia zewnętrznego lub aplikacji i sformatuj punkty danych w reprezentacjach JSON zgodnych z typami danych interfejsu Google Health API. Pamiętaj, że w interfejsie Health API nie są obecnie obsługiwane niestandardowe identyfikatory przypisane przez klienta do zapisu. Takie identyfikatory mogą być podane w żądaniu
POST, ale są ignorowane. - Wstaw lub zaktualizuj rekordy – prześlij punkty danych do interfejsu Google Health API za pomocą punktów końcowych REST. Użyj żądania
POST, aby utworzyć rekordy, a żądaniaPATCH, aby wstawić i zaktualizować istniejące rekordy. Identyfikatory potrzebne do operacjiPATCHbędą pochodzić z poprzedniej operacjiPOST(następny krok w poprzednim cyklu). - Przetwarzaj zwrócone identyfikatory zasobów – jeśli używasz identyfikatorów generowanych przez serwer, wyodrębnij
i zapisz zwróconą przez serwer
namelub identyfikator zasobu w magazynie danych dewelopera, aby umożliwić przyszłe aktualizacje (PATCH) lub usunięcia (DELETE). Więcej informacji o tych 2 typach znajdziesz w sekcji Strategie identyfikacji.
Przeczytane
- Odczytuj rekordy – pobieraj nowe dane i zmiany w istniejących danych w interfejsie Google Health API za pomocą punktów końcowych REST (
GETz parametrami zapytaniafilteri paginacjąpageTokenlub punktów końcowych agregacji, takich jakrollUpidailyRollUp) albo otrzymuj powiadomienia w czasie rzeczywistym za pomocą subskrypcji webhooka (projects.subscribers). Powiadomienie wskazuje tylko, że dostępne są nowe dane, a nie jakie to dane. - Synchronizuj magazyn danych dewelopera – synchronizuj nowe i zaktualizowane dane z magazynem danych dewelopera.
Ten cykl powtarza się w odpowiednich odstępach czasu w zależności od konkretnych potrzeb urządzeń zewnętrznych lub aplikacji. Zalecamy, aby synchronizować dane między własnym magazynem danych a interfejsem Google Health API w tej kolejności.
Strategie identyfikacji
Jeśli zamierzasz zapisywać dane w interfejsie Google Health API, przed utworzeniem integracji z interfejsami Google Health API musisz wybrać strategię identyfikacji zasobów podczas tworzenia punktów danych (podstawowej jednostki danych).
W interfejsie Health API nie są obecnie obsługiwane identyfikatory przypisane przez klienta do zapisu.
Takie identyfikatory mogą być podane w żądaniu POST, ale są ignorowane. Szczegóły tej opcji są podane tutaj w celach informacyjnych.
- Identyfikatory generowane przez serwer (opcja domyślna): klient przesyła dane bez identyfikatora, a backend interfejsu Google Health API generuje i zwraca unikalny identyfikator systemu.
- Niestandardowe identyfikatory przypisane przez klienta (zgodnie z AIP-133, obecnie nie są obsługiwane): aplikacja kliencka generuje unikalny identyfikator (np. UUID lub klucz podstawowy lokalnej bazy danych) i podaje go w ścieżce zasobu podczas tworzenia.
W tabeli poniżej porównaliśmy obie strategie identyfikacji, aby pomóc Ci wybrać odpowiednie podejście do integracji:
| Funkcja | Identyfikatory generowane przez serwer | Niestandardowe identyfikatory przypisane przez klienta |
|---|---|---|
| Generowanie identyfikatorów | Serwer generuje losowy identyfikator systemu podczas POST
wykonywania. |
Klient generuje stabilny identyfikator lokalnie (UUID v4 / wewnętrzny klucz podstawowy) przed zapisem. |
| Ścieżka zasobu | .../dataPoints/{server_id} (zwracany w odpowiedzi) |
.../dataPoints/{custom_id} |
| Lokalny krok po zapisie | Wymagany. Aby umożliwić przyszłe aktualizacje lub usunięcia, musisz zapisać zwrócony server_id w lokalnej
bazie danych. |
Brak. Aplikacja jest już właścicielem identyfikatora. |
| Tabela mapowania identyfikatorów | Wymagana. Klient musi utrzymywać dwukierunkowe mapowanie
(local_id ↔ server_id). |
Nie jest potrzebna. Klient używa bezpośrednio własnego klucza podstawowego. |
| Zachowanie podczas ponawiania (słaba sieć) | Ryzyko duplikatów. Ponowienie żądania, które przekroczyło limit czasu POST
, spowoduje utworzenie zduplikowanego rekordu z nowym identyfikatorem serwera. |
Bezpieczne i idempotentne. Ponowienie żądania POST z tym samym
custom_id zapobiega tworzeniu duplikatów (zwraca 409
ALREADY_EXISTS). |
| Obsługa synchronizacji offline | Ograniczona. Przed odwołaniem się do oficjalnych identyfikatorów zasobów musisz poczekać na odpowiedź serwera. | Pełna. Encje można tworzyć i modyfikować offline za pomocą stabilnych identyfikatorów, a następnie bezproblemowo synchronizować po ponownym połączeniu. |
| Ograniczenia formatu | Obsługiwane w całości przez serwer. | Musi być zgodny z wyrażeniem ^[a-z0-9-]{4,63}$ (4–63 małe litery
alfanumeryczne i łączniki). |
| Kiedy wybrać |
Wybierz identyfikatory generowane przez serwer, jeśli:
|
Wybierz niestandardowe identyfikatory, jeśli:
|
Cykl życia synchronizacji tylko do odczytu
Aplikacja, która ma tylko odczytywać dane z interfejsu Google Health API, musi skopiować dane do magazynu danych dewelopera i obsługiwać część cyklu życia związaną z synchronizacją.
Obowiązują tu te same zadania, które zostały opisane w sekcji Odczyt.
Rysunek 2 przedstawia cykl życia tylko do odczytu.