DEV Community

Cover image for Cara Menggunakan Insomnia untuk Uji API
Walse
Walse

Posted on • Originally published at apidog.com

Cara Menggunakan Insomnia untuk Uji API

Insomnia adalah klien API dari Kong untuk mengirim request dan memeriksa response. Tool ini mendukung HTTP, REST, GraphQL, gRPC, SOAP, dan WebSocket dalam satu aplikasi, dengan antarmuka yang ringan untuk debugging dan pengujian API sehari-hari.

Coba Apidog hari ini

Panduan ini menunjukkan alur praktis menguji API di Insomnia: membuat koleksi request, mengirim request, membaca response, memakai environment variable, menulis assertion, lalu menjalankan test suite dari CLI.

Instal Insomnia dan buat request pertama

Unduh Insomnia dari situs resmi Kong, lalu instal sesuai platform Anda.

Saat pertama dibuka, Insomnia akan menanyakan apakah Anda ingin login. Anda bisa memilih bekerja secara lokal tanpa akun. Sinkronisasi cloud bersifat opsional, dan perubahan terkait cloud pada Insomnia 8 dibahas di bagian akhir.

Langkah awal:

  1. Buka dashboard Insomnia.
  2. Klik Create.
  3. Pilih Request Collection.
  4. Beri nama, misalnya Pengujian API Pengguna.
  5. Di dalam koleksi, klik tombol +.
  6. Pilih HTTP Request.

Buat request pertama:

GET https://jsonplaceholder.typicode.com/users/1
Enter fullscreen mode Exit fullscreen mode

Klik Send.

Di panel response, periksa:

  • status code
  • response body
  • response time
  • response size
  • hasil JSON yang sudah diformat otomatis

Untuk response besar, gunakan filter JSONPath atau XPath agar lebih mudah menemukan field tertentu.

Konfigurasi method, query parameter, body, header, dan auth

Untuk request selain GET, Anda biasanya perlu mengatur body, query parameter, header, atau autentikasi.

Mengirim JSON dengan POST

Buat request baru dengan method POST, lalu buka tab Body dan pilih JSON.

Contoh payload:

{
  "name": "Daniel Okafor",
  "email": "daniel.okafor@example.com"
}
Enter fullscreen mode Exit fullscreen mode

Saat Anda memilih body JSON, Insomnia otomatis menambahkan header:

Content-Type: application/json
Enter fullscreen mode Exit fullscreen mode

Menambahkan query parameter

Gunakan tab Query untuk menambahkan query string tanpa mengedit URL secara manual.

Contoh:

GET https://api.example.com/users?page=1&limit=10
Enter fullscreen mode Exit fullscreen mode

Di Insomnia, masukkan sebagai parameter:

Key Value
page 1
limit 10

Keuntungannya: setiap parameter bisa diaktifkan atau dinonaktifkan satu per satu.

Menambahkan header

Gunakan tab Headers untuk nilai seperti:

Accept: application/json
X-Request-Id: test-123
Enter fullscreen mode Exit fullscreen mode

Header ini berguna untuk content negotiation, tracing, atau kebutuhan khusus API internal.

Mengatur autentikasi

Buka tab Auth, lalu pilih skema yang sesuai. Insomnia mendukung beberapa jenis auth, termasuk:

  • Bearer Token
  • Basic Auth
  • API Key
  • OAuth 1.0
  • OAuth 2.0
  • AWS IAM

Untuk API berbasis token:

  1. Buka tab Auth.
  2. Pilih Bearer Token.
  3. Masukkan token secara langsung, atau lebih baik gunakan environment variable.

Contoh header yang akan dikirim:

Authorization: Bearer <token>
Enter fullscreen mode Exit fullscreen mode

Jika Anda sedang menentukan status code yang tepat untuk endpoint REST, referensi tentang kode status HTTP yang harus digunakan oleh API REST bisa membantu.

Siapkan environment dan variable

Environment membantu Anda menghindari hardcode seperti base URL, token, atau ID resource.

Di Insomnia, environment adalah objek JSON yang melekat pada koleksi.

Langkahnya:

  1. Klik dropdown environment di sidebar.
  2. Pilih Manage Environments.
  3. Tambahkan variable pada Base Environment atau buat sub-environment.

Contoh environment untuk development:

{
  "base_url": "https://jsonplaceholder.typicode.com",
  "auth_token": "your-token-here"
}
Enter fullscreen mode Exit fullscreen mode

Gunakan variable di request dengan sintaks:

{{ _.base_url }}
Enter fullscreen mode Exit fullscreen mode

Contoh request:

GET {{ _.base_url }}/users/1
Enter fullscreen mode Exit fullscreen mode

Untuk autentikasi:

Authorization: Bearer {{ _.auth_token }}
Enter fullscreen mode Exit fullscreen mode

Buat sub-environment lain untuk production:

{
  "base_url": "https://api.example.com",
  "auth_token": "production-token"
}
Enter fullscreen mode Exit fullscreen mode

Saat environment aktif diganti, semua request yang memakai variable akan otomatis menggunakan nilai baru.

Gunakan template tag untuk chaining request

Insomnia mendukung template tag, yaitu fungsi kecil yang bisa dimasukkan ke field request.

Template tag dapat digunakan untuk:

  • membuat timestamp
  • membuat UUID
  • mengambil nilai dari response sebelumnya
  • menggunakan token login secara otomatis di request berikutnya

Contoh skenario:

  1. Request POST /login mengembalikan token.
  2. Request lain membutuhkan token tersebut di header Authorization.
  3. Insomnia mengambil token dari response login menggunakan JSONPath.
  4. Token dimasukkan otomatis ke request berikutnya.

Contoh response login:

{
  "token": "abc123"
}
Enter fullscreen mode Exit fullscreen mode

JSONPath untuk mengambil token:

$.token
Enter fullscreen mode Exit fullscreen mode

Dengan pendekatan ini, dependensi antar-request tetap deklaratif. Anda tidak perlu menulis glue code hanya untuk mengambil token dan memasukkannya ke request lain.

Untuk ide pengelompokan test yang lebih luas, lihat panduan contoh kasus uji API.

Tulis test suite dengan assertion

Mengirim request hanya menunjukkan response. Untuk memverifikasi response secara otomatis, gunakan fitur test suite Insomnia, yang juga dapat muncul sebagai tab Unit Tests pada koleksi.

Langkah dasar:

  1. Buka koleksi.
  2. Masuk ke tampilan Tests.
  3. Buat test suite.
  4. Tambahkan test individual.
  5. Pilih request target dari dropdown.
  6. Tulis assertion.
  7. Klik Run Tests.

Insomnia menggunakan JavaScript dan assertion bergaya Chai.

Contoh test sederhana:

const response = await insomnia.send();

expect(response.status).to.equal(200);
Enter fullscreen mode Exit fullscreen mode

Contoh test dengan parsing JSON body:

const response = await insomnia.send();
const body = JSON.parse(response.data);

expect(response.status).to.equal(200);
expect(body.email).to.equal("daniel.okafor@example.com");
expect(body).to.have.property("id");
Enter fullscreen mode Exit fullscreen mode

Contoh assertion lain yang umum:

expect(response.headers["content-type"]).to.include("application/json");
Enter fullscreen mode Exit fullscreen mode
expect(body.name).to.be.a("string");
Enter fullscreen mode Exit fullscreen mode
expect(body.id).to.equal(1);
Enter fullscreen mode Exit fullscreen mode

Test suite akan menampilkan hasil setiap test sebagai passed atau failed beserta durasinya.

Strukturkan test suite agar mudah dirawat

Saat jumlah test bertambah, struktur test suite menjadi penting.

Pola yang umum:

  • satu suite per resource
  • satu test untuk satu perilaku
  • nama test harus menjelaskan skenario
  • pisahkan happy path, not found, dan validation error

Contoh struktur:

User API tests
├── GET /users/1 returns user detail
├── GET /users/999 returns 404
├── POST /users creates user
└── POST /users rejects invalid email
Enter fullscreen mode Exit fullscreen mode

Contoh assertion untuk kasus 404:

const response = await insomnia.send();
const body = JSON.parse(response.data);

expect(response.status).to.equal(404);
expect(body).to.have.property("message");
Enter fullscreen mode Exit fullscreen mode

Dengan cakupan test yang kecil, failure lebih mudah dipahami tanpa membaca seluruh kode assertion.

Untuk praktik assertion yang lebih detail, baca panduan pernyataan API. Untuk struktur suite yang berkembang, lihat artikel tentang rangkaian uji untuk otomatisasi pengujian API.

Jalankan test dari command line dengan Inso

GUI cocok untuk debugging manual. Untuk CI/CD, gunakan CLI bernama Inso.

Setelah koleksi diekspor atau disinkronkan, jalankan test suite dari terminal:

inso run test "User API tests"
Enter fullscreen mode Exit fullscreen mode

Jika ada test gagal, Inso mengembalikan exit code non-zero. Ini cocok untuk pipeline CI karena build bisa otomatis gagal saat test API rusak.

Contoh penggunaan di pipeline:

inso run test "User API tests"
Enter fullscreen mode Exit fullscreen mode

Alur umumnya:

  1. Developer push perubahan.
  2. CI menjalankan test Insomnia via Inso.
  3. Jika assertion gagal, pipeline gagal.
  4. Endpoint bermasalah ditemukan sebelum masuk production.

Inso juga dapat digunakan untuk melint spesifikasi API dan membuat laporan test dalam format standar. Untuk pola lebih umum, artikel tentang mengotomatiskan tes API di CI/CD membahas pendekatan yang relevan untuk Inso.

Perubahan cloud di Insomnia 8 dan alternatifnya

Insomnia 8 bergerak ke model cloud-first. Secara default, pengguna didorong untuk membuat akun Kong dan menyimpan project di cloud.

Sebagian komunitas tidak menyukai perubahan ini karena versi sebelumnya lebih lokal dan ramah offline. Rilis berikutnya menghadirkan opsi lokal-saja atau Scratch Pad yang lebih jelas, tetapi perubahan tersebut membuat beberapa tim mengevaluasi alternatif, terutama untuk lingkungan yang membatasi data keluar dari infrastruktur internal.

Jika Anda membutuhkan alternatif, Apidog bisa dicoba. Apidog adalah platform API all-in-one untuk desain, debugging, mocking, pengujian, dan dokumentasi API. Apidog juga dapat mengimpor ekspor Insomnia, sehingga Anda tidak perlu memulai ulang dari nol.

Apidog memungkinkan Anda membuat assertion secara visual tanpa menulis JavaScript, tetapi tetap mendukung scripting jika dibutuhkan. Karena spesifikasi API, data test, dan mock server berada dalam satu project, test lebih mudah dijaga agar tetap selaras dengan kontrak API.

Anda dapat mengunduh Apidog dan mengimpor koleksi Insomnia untuk membandingkan alurnya secara langsung. Untuk opsi lain, daftar alat pengujian API online gratis mencakup beberapa alternatif.

Insomnia tetap kuat untuk developer individu dan tim kecil yang menginginkan klien API minimalis, cepat, dan fokus. Pilihan terbaik bergantung pada kebutuhan tim: cukup debugging request, atau ingin mengelola desain, mock, test, dan dokumentasi API dalam satu tempat.

Pertanyaan yang sering diajukan

Apakah Insomnia gratis untuk digunakan?

Ya. Insomnia memiliki tier gratis untuk penggunaan individu, termasuk mengirim request dan menjalankan test suite secara lokal. Paket berbayar menambahkan fitur kolaborasi tim dan batas sinkronisasi cloud yang lebih besar. Versi terbaru juga memungkinkan penggunaan lokal jika Anda tidak ingin memakai cloud sync.

Protokol apa saja yang didukung Insomnia?

Insomnia mendukung HTTP, REST, GraphQL, gRPC, SOAP, dan WebSocket. Setup request berbeda per protokol, tetapi pemeriksaan response dan assertion untuk request berbasis HTTP dapat digunakan secara konsisten.

Bagaimana cara menulis assertion di Insomnia?

Gunakan fitur test suite. Buka tampilan Tests pada koleksi, buat suite, lalu tambahkan test. Setiap test menggunakan JavaScript, memanggil insomnia.send(), lalu menjalankan assertion expect pada status, header, atau body.

Contoh:

const response = await insomnia.send();
const body = JSON.parse(response.data);

expect(response.status).to.equal(200);
expect(body).to.have.property("id");
Enter fullscreen mode Exit fullscreen mode

Apa yang berubah di Insomnia 8?

Insomnia 8 beralih ke default cloud-first, mendorong pengguna untuk login dengan akun Kong dan menyinkronkan project ke cloud. Beberapa pengguna tidak menyukai perubahan dari aplikasi lokal ke alur berbasis akun. Pembaruan berikutnya menambahkan opsi lokal-saja yang lebih jelas.

Bisakah saya menjalankan test Insomnia di pipeline CI?

Ya. Gunakan Inso, CLI pendamping Insomnia. Ekspor atau sinkronkan koleksi, lalu jalankan:

inso run test "<nama rangkaian>"
Enter fullscreen mode Exit fullscreen mode

Jika ada test gagal, Inso mengembalikan exit code non-zero sehingga CI dapat menggagalkan build secara otomatis.

Top comments (0)