Halaman ini berisi prosedur pemecahan masalah untuk masalah berikut yang mungkin Anda alami dengan Looker API:
- Endpoint API tidak dapat dijangkau
- Hasil API adalah teks yang tidak masuk akal
- Panggilan API tidak merespons
- Error encoding tidak valid
- Error Metode Tidak Ditemukan
- Error Permintaan Buruk (400)
- Error Tidak Sah (401)
- Error Forbidden (403)
- Error Tidak Ditemukan (404)
- Error Method Not Allowed (405)
- Error Conflict (409)
- Error validasi (422)
- Error Too Many Requests (429)
- Error Server Internal (500)
Endpoint API tidak dapat dijangkau
Jika Anda tidak dapat menjangkau endpoint API:
- Verifikasi kredensial API Anda
- Verifikasi URL host API
- Verifikasi port API
- Verifikasi URL panggilan 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:
- Di Looker, akses panel Admin dengan memilih opsi Admin di panel navigasi kiri.
- Di panel kiri halaman Admin, scroll ke bawah, lalu klik Pengguna.
- Telusuri nama pengguna Anda dalam daftar pengguna, lalu klik nama pengguna tersebut untuk mengedit halaman pengguna Anda.
- 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:
- Klik ikon Menu utama Looker , lalu pilih Admin untuk membuka panel Admin.
- Klik API di panel Admin.
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:
- Buka browser, lalu buka konsol browser.
Masukkan URL Host API Anda, diikuti dengan
/alive
. Misalnya, jika URL Host API Anda adalahhttps://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
, nilaiapi_version
harus4.0
, dan nilaibase_url
harus sama dengan URL API instance Looker Anda dalam formathttps://<your-looker-hostname>:<port>
. Berikut adalah contoh filelooker.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.