Istnieje wiele kwestii dotyczących wysyłania żądań do i obsługi odpowiedzi z Open Cloud data store API.
Nagłówki HTTP
Podobnie jak wszystkie punkty końcowe Open Cloud, żądania do magazynu danych, które używają uwierzytelniania za pomocą klucza API, muszą zawierać nagłówek x-api-key. Aby uzyskać więcej informacji, zobacz Zarządzaj kluczami API.
- Niepoprawny lub brakujący klucz API skutkuje błędem 401.
- Ważny klucz API, który nie ma odpowiednich uprawnień, skutkuje błędem 403.
Jeśli żądanie obejmuje ciało, takie jak żądanie utworzenia lub aktualizacji, należy dołączyć nagłówki Content-Type: application/json oraz Content-Length. Większość klientów automatycznie dołącza te nagłówki.
Paginacja
Magazyny danych często zawierają wiele wpisów, co oznacza, że Twój kod, szczególnie podczas wywoływania List Data Store Entries, musi radzić sobie z maksymalną liczbą wyników i stron. Aby dowiedzieć się więcej, zobacz Paginacja.
Filtry
Jeśli używasz prefiksów w nazwach swoich wpisów w magazynie danych, prawdopodobnie chcesz filtrować swoje wywołania GET, w ten sposób:
def list_entries(universe, data_store, filter):
list_path = f'universes/{universe}/data-stores/{data_store}/entries'
url = base_url + list_path
return requests.get(url, params={'filter': f'id.startsWith("global/{filter}")'}, headers={apiHeaderKey: apiKey})
Składnia filtrów jest bardzo ograniczona. Zobacz dokumentację referencyjną, aby poznać dostępne filtry dla standardowych i uporządkowanych magazynów danych.
Zezwól na brakujące flagi
Metody PATCH (aktualizacja) dla standardowych i uporządkowanych magazynów danych mają parametr allow_missing. Jeśli jest ustawiony na true, ten parametr pozwala na tworzenie wpisów, które jeszcze nie istnieją, zamiast zgłaszania błędu. Pozostaw ten parametr na domyślnej wartości false, chyba że masz dobry powód, by tego nie robić; aktualizacja wpisu, który nigdy nie został utworzony, często wskazuje na błąd w logice programowania.
Zakresy
Wiele żądań wymaga określenia zakresu, nawet jeśli jest to domyślna wartość global. Te zakresy różnią się od zakresów uprawnień i umożliwiają podział i organizację wpisów w magazynie danych.
Zamiast tworzyć nie-domyślne zakresy, zdecydowanie zalecamy korzystanie z prefiksów. Aby dowiedzieć się więcej, zobacz Lista i prefiksy.
Content-MD5
Open Cloud v1 API wspiera opcjonalną, zakodowaną w base64 sumę kontrolną MD5 w niektórych żądaniach, co może wychwytywać problemy z integralnością danych. Wiele języków ma wbudowane funkcje do obliczania wartości nagłówka content-md5. Poniższy przykład wykorzystuje Pythona:
$ echo "750" | python -c "import base64, hashlib; print(str(base64.b64encode(hashlib.md5(bytes(input(), encoding='utf8')).digest()), encoding='utf8'))"sTf90fedVsft8zZf6nUg8g==
Jeśli napotkasz problemy z generowaniem prawidłowej wartości content-md5, może być konieczne zakodowanie treści żądania w UTF-8 przed obliczeniem sumy kontrolnej.