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:

Verifikasi kredensial API Anda

Jika endpoint Looker API Anda tidak dapat dijangkau, pertama-tama 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. Telusuri nama pengguna Anda dalam daftar pengguna, lalu klik nama pengguna tersebut untuk mengedit halaman pengguna Anda.
  4. Klik Edit API Keys. Anda dapat melihat Client ID, dan Anda dapat mengklik ikon mata untuk melihat Client Secret untuk setiap kunci API yang telah Anda konfigurasi. Pastikan kredensial API Anda cocok dengan kredensial yang Anda gunakan dalam skrip.

Verifikasi 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 host dan port API yang menghadap pengguna.

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

  1. Klik ikon Menu utama Looker , lalu pilih Admin untuk membuka panel Admin.
  2. Klik API di panel Admin.
  3. Lihat URL Host API.

    Jika kolom API Host URL kosong, instance Looker Anda 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 Anda, diikuti dengan /alive. Misalnya, jika URL Host API Anda adalah https://company.cloud.looker.com, masukkan:

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

    Jika kolom URL Host API Anda 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 menggunakan port 19999:

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

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

Anda juga dapat memverifikasi bahwa Anda telah mencapai API dengan melihat respons jaringan di konsol browser. Respons jaringan harus berupa 200.

Jika pemeriksaan ini gagal, masalahnya mungkin karena Anda memanggil API secara tidak benar atau ada error lain dalam kode Anda. Periksa panggilan API dan kode dalam skrip Anda. Jika sudah benar, lihat bagian berikutnya tentang cara memverifikasi pengalihan nomor Anda.

Verifikasi port API

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

Port API harus diteruskan ke server Looker. Untuk deployment Looker yang dihosting pelanggan, minta administrator jaringan Anda untuk memeriksa setelan port API. Port API yang paling umum 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 seperti halnya untuk port instance Looker Anda:

  • Proxy
  • Load balancer
  • Firewall

Verifikasi URL panggilan API

Pastikan Anda menggunakan URL yang benar untuk panggilan API Anda. 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 API Explorer 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 Get All Running Queries di 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 menampilkan respons berupa teks yang tidak jelas, kemungkinan Anda melihat konten biner dari file PDF, PNG, atau JPG. Beberapa library REST HTTP mengasumsikan bahwa respons API akan berupa file teks sehingga jenis file lain ditampilkan sebagai teks biner.

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

Panggilan API tidak merespons

Jika Anda dapat membuka API Explorer, tetapi panggilan API Anda tidak merespons, pastikan setelan URL Host API instance Looker Anda sudah disetel 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 Anda 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 di seluruhnya, header Content-Type harus disetel ke application/json.

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

Error Metode Tidak Ditemukan

Jika Anda mendapatkan error Method Not Found, 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 adalah JSON yang rusak atau tidak valid, mungkin error penguraian. Sebagian besar error 400 telah melewati autentikasi, sehingga pesan respons error akan memberikan informasi yang lebih spesifik tentang error tersebut.

Error Tidak Sah (401)

Error 401 Unauthorized pada panggilan API berarti panggilan API tidak diautentikasi dengan benar. Untuk mengetahui detail pemecahan masalah selengkapnya, lihat Bagaimana cara memecahkan masalah error 401? Artikel komunitas.

Error Dilarang (403)

Looker API tidak menampilkan error 403 setiap kali pengguna mencoba mengakses objek LookML atau konten lain yang tidak memiliki izin untuk diakses. Menampilkan error 403, bukan error 404, dalam beberapa kasus, dapat memverifikasi keberadaan objek Eksplorasi, dasbor, atau LookML tertentu saat pemilik mungkin lebih memilih agar keberadaan objek tersebut tidak diketahui. Untuk mencegah hal ini, Looker menampilkan error 404 dalam kasus ini dan error yang menyertainya di UI Looker berbunyi: "Halaman yang Anda minta tidak dapat ditemukan. Project 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 mungkin berbeda. Saat menggunakan nomor port yang salah, Anda mungkin melihat error 403. Misalnya, jika instance Looker Anda dikonfigurasi dengan port API default 443, menghubungkan 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 lebih lanjut opsi startup Looker tempat Anda dapat menentukan port API.

Hal ini juga dapat terjadi saat Anda menggunakan gem Ruby SDK yang sudah tidak berlaku. Pastikan untuk selalu memperbarui permata tersebut. 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.

Error Tidak Ditemukan (404)

Error 404 Not Found adalah error default jika terjadi kesalahan, biasanya terkait hal-hal seperti izin. Pesan respons untuk error 404 memberikan informasi yang minimal, jika ada. Hal ini disengaja, karena error 404 ditampilkan kepada orang yang memiliki 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 hal ini disebabkan karena ID klien atau secret klien API Anda tidak valid (lihat Verifikasi kredensial API Anda sebelumnya di halaman ini). Endpoint REST login API adalah sebagai berikut:

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

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

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

    • 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 API instance 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 dapat mendapatkan error 404 setelah login. Jika Anda login dan mendapatkan error 404, artinya 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 didukung resource target.

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

Error Conflict (409)

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

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

Anda mungkin mengalami error ini di Looker saat mencoba meng-checkout 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 ada sesuatu dalam permintaan yang gagal dalam pemeriksaan data yang dilakukan. Permintaan memiliki satu atau beberapa jenis error berikut (respons error akan menentukan error yang tepat):

  • Kolom tidak ada: Ada parameter wajib yang tidak diberikan (respons error akan menunjukkan kolom mana yang tidak ada).
  • Tidak valid: Nilai yang diberikan tidak cocok dengan nilai yang ada atau nilai tidak dalam format yang benar. Misalnya, jika Anda mencoba membuat Look 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 sudah ada, Anda akan mendapatkan error validasi dengan kode already_exists.

Lihat pesan respons error untuk mengetahui detail kolom yang mungkin tidak ada atau wajib diisi, atau kolom yang mungkin memiliki nilai tidak valid. Pesan respons akan memberikan semua error validasi secara bersamaan. Jadi, jika Anda memiliki kolom yang tidak ada dan juga kolom yang salah, respons error akan mencantumkan semua masalah pada 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 Too Many Requests (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 kecepatan Looker dalam postingan Komunitas Looker Is there a limit to the number of API requests you can send at one time? (Apakah ada batasan jumlah permintaan API yang dapat Anda kirim sekaligus?)

Error Server Internal (500)

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

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