Halaman ini memiliki 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 Bad Request (400)
- Error tidak sah (401)
- Error Forbidden (403)
- Error Tidak Ditemukan (404)
- Error Metode Tidak Diizinkan (405)
- Error konflik (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:
- Memverifikasi kredensial API Anda
- Memverifikasi URL host API
- Memverifikasi port API
- Memverifikasi URL panggilan 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:
- 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 di daftar pengguna, lalu klik nama tersebut untuk mengedit halaman pengguna Anda.
- 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:
- Akses panel Admin dengan memilih opsi Admin di panel navigasi kiri.
- Klik API di panel Admin.
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:
- 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 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
, 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 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.