Pemecahan masalah Looker API

Halaman ini memiliki 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

Jika endpoint API Looker tidak dapat dijangkau, verifikasi terlebih dahulu bahwa 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 di daftar pengguna, lalu klik nama tersebut untuk mengedit halaman pengguna Anda.
  4. Klik Edit API Keys. Anda dapat melihat Client ID, dan 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.

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 host dan port API yang ditampilkan kepada 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 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 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 200.

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

Memverifikasi port API

Jika pemeriksaan sebelumnya gagal dan Anda memiliki penempatan Looker yang dihosting pelanggan, port API mungkin 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 biasanya 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 untuk port instance Looker Anda:

  • 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 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 teks yang tidak jelas, kemungkinan Anda melihat konten biner file PDF, PNG, atau JPG. Beberapa library REST HTTP mengasumsikan 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 menetapkan tanda pada panggilan API untuk memberi tahu library REST HTTP bahwa ini 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 Anda 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 Anda menerima error encoding saat mencoba melakukan panggilan API, Anda mungkin perlu menetapkan Content-Type yang sesuai di header selama permintaan. Standar protokol HTTP mewajibkan setiap permintaan POST, PUT, atau PATCH berisi header Content-Type. Karena Looker API menggunakan JSON di seluruh bagian, header Content-Type harus ditetapkan ke application/json.

Perhatikan bahwa menggunakan 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 Bad Request (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 lulus 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 Forbidden (403)

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

Bergantung pada lingkungan tempat instance Looker dihosting, dan konfigurasi instance Looker, nomor port dan URL terkait tempat API dapat diakses mungkin berbeda. Jika 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 selengkapnya tentang opsi startup Looker tempat Anda dapat menentukan port API.

Hal ini juga dapat terjadi jika Anda menggunakan gem Ruby SDK versi lama. Pastikan untuk terus 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 Not Found (404)

Error 404 Not Found adalah error default jika terjadi error, 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 "platform serangan" Looker API.

Jika upaya login API menampilkan error 404, kemungkinan besar karena client ID atau secret klien API Anda tidak valid (lihat Memverifikasi 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 Swagger codegen API atau Looker SDK, pastikan nilai base_url Anda sudah benar:

  • Untuk klien codegen Swagger, base_url harus berupa:

    • 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 ini harus berisi daftar metode yang didukung resource target.

Misalnya, salah satu cara Anda mungkin 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 error 405 akan terjadi.

Error konflik (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 di luar Looker 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 yang diperlukan yang tidak diberikan (respons error akan menunjukkan kolom yang tidak ada).
  • Tidak valid: Nilai yang diberikan tidak cocok dengan nilai yang ada atau nilainya tidak dalam format yang 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 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 yang mungkin tidak ada atau wajib diisi, atau kolom yang mungkin memiliki nilai yang 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 kapasitas Looker di postingan Komunitas Looker 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 yang tidak 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. Setiap respons 500 dari Looker tidak terduga. Jadi, jika Anda melihat error ini secara konsisten saat mencoba berinteraksi dengan Looker, sebaiknya buka permintaan dukungan.