Pemecahan masalah Looker API

Halaman ini berisi prosedur pemecahan masalah untuk masalah berikut yang mungkin Anda alami dengan Looker API:

Endpoint API tidak dapat dijangkau

Jika Anda tidak dapat menjangkau endpoint API:

Memverifikasi kredensial API Anda

Jika endpoint Looker API Anda tidak dapat dijangkau, pastikan kredensial API Anda sudah benar. Untuk melihat kredensial API Anda:

  1. Di Looker, akses panel Admin dengan memilih opsi Admin di panel navigasi kiri.
  2. Di panel kiri halaman Admin, scroll ke bawah, lalu klik Pengguna.
  3. Cari nama pengguna Anda dalam daftar pengguna, dan klik untuk mengedit halaman pengguna Anda.
  4. Klik Edit API Keys. Anda dapat melihat Client ID dan dapat mengklik ikon mata untuk melihat Rahasia Klien untuk setiap kunci API yang telah dikonfigurasi. Verifikasi bahwa kredensial API Anda cocok dengan kredensial yang digunakan dalam skrip.

Memverifikasi URL API

Masalah umum lainnya dalam menjangkau endpoint API adalah URL host API yang salah. Sebagian besar instance Looker menggunakan URL default untuk API. Namun, penginstalan Looker yang menggunakan jalur API alternatif atau penginstalan Looker yang berada di belakang load balancer (misalnya, konfigurasi cluster) atau proxy lainnya mungkin tidak menggunakan URL default. Jika demikian, URL host API harus menunjukkan nama dan port host API yang dilihat pengguna.

Admin Looker dapat melihat URL host API di setelan admin API (dijelaskan secara lebih mendetail di halaman dokumentasi Setelan admin - API). Untuk melihat URL host API:

  1. Akses panel Admin dengan memilih opsi Admin di panel navigasi kiri.
  2. Klik API di panel Admin.
  3. Lihat URL Host API.

    Jika kolom URL Host API kosong, instance Looker Anda akan menggunakan format default, yaitu:

    https://<instance_name>.cloud.looker.com:<port>
    

Untuk menguji URL Host API:

  1. Buka browser, lalu buka konsol browser.
  2. Masukkan URL Host API yang diikuti dengan /alive. Misalnya, jika URL Host API Anda adalah https://company.cloud.looker.com, masukkan:

    https://company.cloud.looker.com/alive
    

    Jika kolom API Host URL kosong, gunakan URL API default. Misalnya, untuk instance yang dihosting di Google Cloud, Microsoft Azure, dan instance yang dihosting di Amazon Web Services (AWS) yang dibuat pada atau setelah 07/07/2020, jalur Looker API default menggunakan port 443:

    https://<instance_name>.cloud.looker.com:443/alive
    

    Untuk instance yang dihosting di AWS yang dibuat sebelum 07/07/2020, jalur Looker API default akan menggunakan port 19999:

    https://<instance_name>.cloud.looker.com:19999/alive
    

Jika URL host API benar, URL ini akan menghasilkan halaman web kosong, bukan halaman error.

Anda juga dapat memverifikasi bahwa Anda telah menjangkau API dengan melihat respons jaringan pada konsol browser. Respons jaringan harus 200.

Jika pemeriksaan ini gagal, masalahnya mungkin Anda memanggil API dengan tidak benar atau ada error lain di kode Anda. Periksa panggilan API dan kode dalam skrip Anda. Jika sudah benar, lihat bagian berikutnya tentang memverifikasi transfer Anda.

Memverifikasi port API

Jika pemeriksaan di atas gagal dan Anda memiliki deployment Looker yang dihosting pelanggan, port API mungkin perlu dibuka di infrastruktur jaringan.

Port API harus meneruskan ke server Looker. Untuk deployment Looker yang dihosting pelanggan, minta administrator jaringan Anda untuk memeriksa setelan port API. Port API biasanya adalah 443 atau 19999. Port API harus memiliki setelan konfigurasi yang sama dengan port instance Looker (9999 secara default). Administrator jaringan Anda harus memverifikasi bahwa setelan berikut sama untuk port API dan pada port instance Looker:

  • Proxy
  • Load balancers
  • Firewall

Memverifikasi URL panggilan API

Pastikan Anda menggunakan URL yang benar untuk panggilan API. Format URL endpoint API adalah:

<API Host URL>/api/<API version>/<API call>

Jika Anda menggunakan URL host API default, format URL endpoint API adalah:

https://<instance_name>:<port>/api/<API version>/<API call>

Anda bisa mendapatkan format URL untuk endpoint API dari Penjelajah API atau dari dokumentasi Referensi API.

Misalnya, Referensi API 4.0 memberikan jalur relatif berikut untuk endpoint Get All Running Queries:

/api/4.0/running_queries

Oleh karena itu, URL endpoint API lengkap untuk endpoint Dapatkan Semua Kueri yang Berjalan pada instance Looker docsexamples.dev.looker.com adalah sebagai berikut:

https://docsexamples.dev.looker.com:443/api/4.0/running_queries

Hasil API adalah teks yang tidak masuk akal

Jika API mengembalikan respons teks yang kacau balau, kemungkinan Anda melihat konten biner file PDF, PNG, atau JPG. Beberapa library REST HTTP berasumsi bahwa respons API akan berupa file teks sehingga jenis file lainnya ditampilkan sebagai teks biner.

Dalam hal ini, Anda harus memastikan bahwa library REST HTTP menangani respons API sebagai data biner, bukan sebagai teks. Dalam beberapa kasus, hal ini mungkin berarti menyetel flag pada panggilan API untuk memberi tahu library REST HTTP bahwa hal tersebut adalah hasil biner, atau mungkin berarti menangani hasilnya dengan cara khusus, seperti sebagai aliran byte atau sebagai array byte, bukan menetapkan hasilnya ke variabel string.

Panggilan API tidak merespons

Jika Anda dapat membuka API Explorer, tetapi panggilan API tidak merespons, pastikan setelan URL Host API instance Looker ditetapkan dengan benar. Admin Looker dapat melihat URL host API di setelan admin API Looker (dijelaskan di halaman dokumentasi Setelan admin - API).

Error encoding tidak valid

Jika menerima error encoding saat mencoba melakukan panggilan API, Anda mungkin perlu menyetel Content-Type yang tepat di header selama permintaan. Standar protokol HTTP mewajibkan setiap permintaan POST, PUT, atau PATCH berisi header Content-Type. Karena Looker API menggunakan JSON secara keseluruhan, header Content-Type harus ditetapkan ke application/json.

Perlu diperhatikan bahwa penggunaan SDK Looker akan otomatis menangani masalah ini untuk Anda.

Error Metode Tidak Ditemukan

Jika mendapatkan error Metode Tidak Ditemukan, seperti method not found: all_looks(), hal pertama yang harus diperiksa adalah versi API Anda. Ada beberapa panggilan API yang baru di API 4.0 atau yang dihapus di API 4.0. Lihat pengumuman Looker API 4.0 Tersedia Secara Umum untuk mengetahui daftar update.

Error Permintaan Buruk (400)

Error 400 Bad Request menunjukkan bahwa data yang diberikan dalam panggilan API tidak dapat dikenali. Penyebabnya sering kali rusak atau JSON tidak valid, mungkin terjadi error penguraian. Sebagian besar error 400 telah lulus autentikasi, sehingga pesan respons error akan memberikan informasi yang lebih spesifik tentang error tersebut.

Error Terlarang (403)

Looker API tidak menampilkan error 403 setiap kali pengguna mencoba mengakses objek LookML atau konten lain yang izinnya tidak mereka miliki. Menampilkan error 403 dan bukan error 404 dapat, dalam beberapa kasus, memverifikasi keberadaan objek Explore, dasbor, atau LookML tertentu jika pemiliknya lebih memilih agar hal ini tidak diketahui. Untuk mencegah hal ini, Looker menampilkan error 404 dalam kasus ini dan error yang menyertainya di UI Looker bertuliskan: "Halaman yang Anda minta tidak dapat ditemukan. Dokumen tersebut tidak ada atau Anda tidak memiliki izin untuk melihatnya."

Bergantung pada lingkungan tempat instance Looker Anda dihosting, dan konfigurasi instance Looker Anda, nomor port dan URL terkait tempat API dapat diakses dapat berbeda. Saat menggunakan nomor port yang salah, Anda mungkin melihat error 403. Misalnya, jika instance Looker Anda dikonfigurasi dengan port API default 443, koneksi ke https://mycompany.looker.com/api/4.0/login — bukan https://mycompany.looker.com:443/api/4.0/login — akan menampilkan error 403. Untuk instance yang dihosting pelanggan, Anda dapat membaca selengkapnya tentang opsi startup Looker yang dapat menentukan port API.

Hal ini juga dapat terjadi saat Anda menggunakan versi Ruby SDK yang sudah usang. Pastikan untuk terus mendapatkan info terbaru. Anda dapat memeriksanya di https://rubygems.org/gems/looker-sdk.

Hal ini juga dapat terjadi jika Anda tidak menyertakan bagian /api/<version number>/ dari URL. Dalam hal ini, jika pengguna mencoba terhubung ke https://mycompany.looker.com:443/login, mereka akan melihat respons 403.

Kesalahan Tidak Ditemukan (404)

Error 404 Not Found adalah error default jika terjadi kesalahan, biasanya dengan hal-hal seperti izin. Pesan respons untuk error 404 memberikan informasi minimal, jika ada. Hal ini disengaja, karena error 404 ditampilkan kepada orang dengan kredensial login yang salah atau izin yang tidak memadai. Looker tidak ingin memberikan informasi spesifik dalam pesan respons 404, karena informasi ini dapat digunakan untuk memetakan "permukaan serangan" Looker API.

Jika upaya login API menampilkan error 404, kemungkinan besar karena client ID atau rahasia klien API Anda tidak valid (lihat Memverifikasi kredensial API di bagian awal pada halaman ini). Endpoint REST login API adalah sebagai berikut:

  • https://<your-looker-hostname>:<port>/api/4.0/login

Jika Anda menggunakan Swagger codegen API atau Looker SDK, pastikan nilai base_url Anda sudah benar:

  • Untuk klien codegen Swagger, base_url harus berupa kode berikut:

    • https://<your-looker-hostname>:<port>/api/4.0/
  • Untuk penerapan Looker SDK yang menggunakan looker.ini, nilai api_version harus 4.0, dan nilai base_url harus sama dengan URL instance API Looker Anda dalam format https://<your-looker-hostname>:<port>. Berikut adalah contoh file looker.ini:

    # api_version should be 4.0
    api_version=4.0
    base_url=https://<your-looker-hostname>:<port>
    

Anda juga bisa mendapatkan error 404 setelah login. Jika Anda masuk dan mendapatkan kesalahan 404, itu berarti Anda tidak memiliki izin untuk perintah API yang baru saja Anda panggil.

Error Metode Tidak Diizinkan (405)

Error 405 Method Not Allowed menunjukkan bahwa server mengetahui metode permintaan, tetapi resource target tidak mendukung metode ini.

Server harus membuat kolom header Allow dalam respons kode status 405. Kolom harus berisi daftar metode yang saat ini didukung oleh resource target.

Sebagai contoh, salah satu cara untuk menemukan hal ini di Looker adalah saat Anda mencoba menggunakan endpoint update_dashboard() untuk memperbarui metadata dasbor LookML. Perubahan parameter id dari dasbor LookML tidak didukung melalui Looker API, sehingga akan terjadi error 405.

Error konflik (409)

Kode status respons 409 Conflict menunjukkan permintaan bertentangan dengan status resource target saat ini.

Konflik kemungkinan besar terjadi sebagai respons terhadap permintaan PUT. Contoh umum non-Looker dari error ini terjadi saat mengupload file yang lebih lama dari file yang ada di server, sehingga menyebabkan konflik kontrol versi.

Anda mungkin mengalami error ini di Looker saat mencoba memeriksa cabang git baru menggunakan API, atau saat menggunakan endpoint seperti create_group() atau create_dashboard(). Dalam kasus ini, periksa apakah objek yang Anda coba buat sudah ada.

Error validasi (422)

Error validasi terjadi saat sesuatu dalam permintaan gagal dalam pemeriksaan data yang dilakukan. Permintaan memiliki satu atau beberapa jenis error berikut (respons error akan menentukan error yang sebenarnya):

  • Kolom tidak ada: Ada parameter wajib yang belum diberikan (respons error akan menyatakan kolom mana yang tidak ada).
  • Tidak valid: Nilai yang diberikan tidak cocok dengan nilai yang ada atau format nilai tidak benar. Misalnya, jika Anda mencoba membuat Tampilan dan ID kueri yang Anda berikan dalam panggilan API tidak cocok dengan kueri yang ada, Anda akan mendapatkan error validasi.
  • Sudah ada: Panggilan API mencoba membuat objek dengan ID atau nama yang sudah ada di instance Looker Anda. Misalnya, nama koneksi database harus unik. Jika Anda mencoba membuat koneksi database baru yang menggunakan nama koneksi yang ada, Anda akan mendapatkan error validasi dengan kode already_exists.

Lihat pesan respons error untuk mengetahui detail tentang kolom mana yang mungkin tidak ada atau wajib diisi, atau kolom mana yang mungkin memiliki nilai yang tidak valid. Pesan respons akan mencantumkan semua error validasi secara bersamaan. Jadi, jika ada kolom yang tidak ada serta kolom yang salah, respons error akan mencantumkan semua masalah dengan panggilan API Anda.

Berikut adalah contoh respons:

{
  "message": "Validation Failed",
  "errors": [
    {
    "field": "dialect",
    "code": "missing_field",
    "message": "This field is required.",
    "documentation_url": "http://docs.looker.com/"
    },
    {
    "field": "db_timezone",
    "code": "invalid",
    "message": "Must specify a database timezone when user timezones are activated.",
    "documentation_url": "http://docs.looker.com/"
    }
  ],
    ...

Dalam hal ini, panggilan API tidak memiliki kolom dialect yang diperlukan dan juga memiliki nilai yang tidak valid yang diberikan di db_timezone.

Error Terlalu Banyak Permintaan (429)

Kode status respons 429 Too Many Requests menunjukkan bahwa pengguna telah mengirim terlalu banyak permintaan dalam jangka waktu tertentu ("pembatasan kapasitas"). Anda dapat membaca lebih lanjut kebijakan pembatasan kapasitas Looker di postingan Komunitas Looker Apakah ada batas untuk jumlah permintaan API yang dapat Anda kirim dalam satu waktu?

Error Server Internal (500)

Kode respons 500 Internal Server Error menunjukkan bahwa server mengalami kondisi tidak terduga yang mencegahnya memenuhi permintaan.

Respons error ini adalah respons "catch-all" generik. Biasanya, hal ini menunjukkan bahwa server tidak dapat menemukan kode error 5xx yang lebih spesifik untuk ditampilkan sebagai respons. Respons 500 dari Looker tidak diharapkan, jadi, jika Anda terus melihat error ini saat mencoba berinteraksi dengan Looker, sebaiknya buka permintaan dukungan.