Insomnia, Kong tarafından geliştirilen hafif bir API istemcisidir. HTTP, REST, GraphQL, gRPC, SOAP ve WebSocket isteklerini tek arayüzden göndermenizi, yanıtları incelemenizi ve test paketleriyle doğrulama yapmanızı sağlar. Bu rehberde Insomnia ile bir API isteği oluşturacak, ortam değişkenleri kullanacak, assertion yazacak ve testleri komut satırından çalıştıracaksınız.
Insomnia'yı kurun ve ilk isteği oluşturun
Insomnia'yı resmi Kong sitesinden indirin ve işletim sisteminize kurun. İlk açılışta oturum açmanız istenebilir. Bulut senkronizasyonu kullanmak istemiyorsanız yerel çalışma seçeneğini tercih edebilirsiniz.
Insomnia'da çalışmalar genellikle koleksiyonlar altında düzenlenir.
- Ana ekranda Create / Oluştur seçeneğine tıklayın.
- Request Collection / İstek Koleksiyonu oluşturun.
- Koleksiyona örneğin
Kullanıcı API testleriadını verin. - Koleksiyon içinde + düğmesine tıklayın.
- HTTP Request / HTTP İsteği seçin.
İlk test için GET metodunu kullanın:
GET https://jsonplaceholder.typicode.com/users/1
Send / Gönder düğmesine tıkladığınızda Insomnia sağ panelde şunları gösterir:
- Yanıt gövdesi
- HTTP durum kodu
- Yanıt süresi
- Yanıt boyutu
- JSON biçimlendirilmiş çıktı
JSON yanıt büyükse JSONPath veya XPath filtreleriyle sadece ihtiyacınız olan alanları görüntüleyebilirsiniz.
Metot, parametre, gövde ve kimlik doğrulama ayarlayın
Basit GET isteklerinden sonra genellikle gövde, header, query parametresi veya auth bilgisi eklemeniz gerekir. Insomnia bu ayarları URL alanının altındaki sekmelerde toplar.
JSON gövdeyle POST isteği gönderin
Yeni bir istek oluşturun ve metodu POST yapın. Body / Gövde sekmesinde JSON seçin:
{
"name": "Daniel Okafor",
"email": "daniel.okafor@example.com"
}
JSON gövde seçtiğinizde Insomnia genellikle Content-Type: application/json başlığını otomatik ekler.
Query parametreleri ekleyin
URL'yi elle uzatmak yerine Query sekmesini kullanın.
Örneğin şu URL yerine:
GET https://api.example.com/users?page=1&limit=20&active=true
parametreleri tablo halinde ekleyebilirsiniz:
| Parametre | Değer |
|---|---|
page |
1 |
limit |
20 |
active |
true |
Bu yöntem uzun URL'leri okunabilir tutar ve parametreleri tek tek etkinleştirip devre dışı bırakmanızı sağlar.
Header ekleyin
Headers / Başlıklar sekmesinde API'nizin beklediği özel başlıkları tanımlayın:
Accept: application/json
X-Request-Id: test-123
Hangi durum kodlarını beklemeniz gerektiğinden emin değilseniz, REST API'lerinin kullanması gereken HTTP durum kodları referansı yardımcı olabilir.
Bearer Token ile kimlik doğrulama yapın
Auth / Kimlik Doğrulama sekmesinde API'nizin kullandığı yöntemi seçin. Insomnia şu şemaları destekler:
- Bearer Token
- Basic Auth
- API Key
- OAuth 1.0 / 2.0
- AWS IAM
- Diğer yaygın auth türleri
Bearer token kullanan bir API için:
- Auth sekmesini açın.
- Bearer Token seçin.
- Token değerini girin.
Ancak token'ı doğrudan isteğe yazmak yerine ortam değişkeni kullanmak daha güvenlidir.
Ortamları ve değişkenleri kullanın
Ortamlar, aynı koleksiyonu farklı hedeflerde çalıştırmanızı sağlar. Örneğin dev, staging ve production için ayrı base URL veya token değerleri kullanabilirsiniz.
Yan çubuğun üst kısmındaki ortam menüsünden Manage Environments / Ortamları Yönet bölümünü açın.
Temel bir ortam şu şekilde olabilir:
{
"base_url": "https://jsonplaceholder.typicode.com",
"auth_token": "your-token-here"
}
İstek URL'sinde değişkeni şu sözdizimiyle kullanın:
GET {{ _.base_url }}/users/1
Authorization header içinde token değişkeni kullanmak için:
Authorization: Bearer {{ _.auth_token }}
Aktif ortamı değiştirdiğinizde bu değişkenleri kullanan tüm istekler otomatik olarak yeni değerlere göre çalışır.
İstekleri şablon etiketleriyle zincirleyin
Insomnia, alanlara dinamik değerler eklemek için template tags / şablon etiketleri destekler. Bunlarla şunları üretebilir veya alabilirsiniz:
- UUID
- Timestamp
- Ortam değişkeni
- Önceki bir isteğin yanıtından değer
Örneğin login isteğiniz şu yanıtı dönüyorsa:
{
"token": "abc.def.ghi"
}
korumalı isteklerde bu token'ı elle kopyalamak yerine yanıt şablon etiketiyle $.token JSONPath değerini çekebilirsiniz.
Kullanım mantığı:
- Login isteğini oluşturun.
- Yanıttaki token alanını JSONPath ile hedefleyin:
$.token - Korumalı isteklerde
Authorizationbaşlığına bu değeri bağlayın. - Insomnia gerekirse login isteğini çalıştırır, token'ı alır ve sonraki istekte kullanır.
Bu yaklaşım, test zincirini betik yazmadan yönetmenizi sağlar. Test senaryolarını gruplama fikri için API test durumu örneği rehberine de bakabilirsiniz.
Assertion içeren test paketleri yazın
İstek göndermek yanıtı görmenizi sağlar; ancak yanıtın doğru olup olmadığını otomatik kontrol etmek için test paketleri kullanmanız gerekir. Insomnia'da bu bölüm bazı sürümlerde Tests veya Unit Tests olarak görünür.
Bir test paketi oluşturmak için:
- Koleksiyonunuzu açın.
- Tests / Testler görünümüne geçin.
- Yeni bir test paketi oluşturun.
- Pakete testler ekleyin.
- Her testi koleksiyondaki ilgili isteğe bağlayın.
Insomnia testleri JavaScript ile yazılır ve Chai tarzı expect assertion kullanır.
Basit durum kodu testi:
const response = await insomnia.send();
expect(response.status).to.equal(200);
Yanıt gövdesini kontrol eden daha kapsamlı bir test:
const response = await insomnia.send();
const body = JSON.parse(response.data);
expect(response.status).to.equal(200);
expect(body).to.have.property("id");
expect(body.email).to.equal("daniel.okafor@example.com");
Header kontrolü örneği:
const response = await insomnia.send();
expect(response.headers["content-type"]).to.include("application/json");
Hata senaryosu testi:
const response = await insomnia.send();
expect(response.status).to.equal(404);
Testleri çalıştırmak için Run Tests / Testleri Çalıştır düğmesine basın. Insomnia her testin geçip geçmediğini ve ne kadar sürdüğünü gösterir.
Test paketlerini düzenli tutun
Test sayısı arttıkça paket yapısı önem kazanır. Uygulanabilir bir düzen şu şekildedir:
User API tests
├── Kullanıcı detayını getirir
├── Olmayan kullanıcı için 404 döner
├── Geçersiz email için doğrulama hatası döner
Article API tests
├── Makale listesini getirir
├── Makale oluşturur
├── Yetkisiz istekte 401 döner
Her test tek davranışı doğrulamalıdır. Böylece bir test başarısız olduğunda test adından neyin bozulduğunu anlayabilirsiniz.
İyi assertion yazma konusunda daha fazla örnek için API onaylamaları rehberine, paketleri büyüdükçe yapılandırmak için ise API test otomasyonu için test paketleri makalesine bakabilirsiniz.
Inso ile testleri komut satırından çalıştırın
GUI geliştirme sırasında kullanışlıdır; ancak CI/CD için testleri başsız şekilde çalıştırmanız gerekir. Insomnia bunun için Inso adlı komut satırı aracını sağlar.
Koleksiyonunuzu dışa aktardıktan veya senkronize ettikten sonra test paketini terminalden çalıştırabilirsiniz:
inso run test "User API tests"
Bir test başarısız olursa Inso sıfır olmayan exit code döndürür. Bu davranış CI sistemleri için idealdir çünkü derlemeyi otomatik olarak başarısız işaretleyebilirsiniz.
Basit bir CI akışı şu şekilde olabilir:
npm install -g inso
inso run test "User API tests"
GitHub Actions veya benzer bir çalıştırıcıda bu komutu her push veya pull request için çalıştırabilirsiniz. Böylece bozuk bir endpoint üretime ulaşmadan yakalanır.
Inso ayrıca API spesifikasyonlarını lint etmek ve test raporları üretmek için de kullanılabilir. Genel yaklaşım için CI/CD'de API testlerini otomatikleştirmek yazısındaki kalıp Insomnia testlerine de uygulanabilir.
Insomnia 8'deki bulut değişikliği ve alternatif yaklaşım
Insomnia 8 ile ürün, bulut öncelikli bir modele doğru ilerledi. Varsayılan akış kullanıcıları Kong hesabı oluşturmaya ve projeleri bulutta saklamaya yönlendirdi. Önceki sürümlerin yerel ve çevrimdışı çalışmaya daha yakın olması nedeniyle bu değişiklik topluluğun bir kısmında tepki oluşturdu.
Daha sonraki sürümlerde sadece yerel çalışma veya “Scratch Pad” gibi seçenekler daha belirgin hale getirildi. Yine de bazı ekipler, özellikle API verilerinin şirket dışına çıkmaması gereken ortamlarda alternatif araçları değerlendirmeye başladı.
Bu senaryo sizin için geçerliyse Apidog değerlendirilebilir. Apidog; API tasarımı, hata ayıklama, mock server, test ve dokümantasyonu tek platformda birleştirir. Insomnia dışa aktarımlarını içe aktarabildiği için mevcut koleksiyonları sıfırdan oluşturmanız gerekmez.
Apidog ayrıca JavaScript yazmadan görsel assertion oluşturmayı destekler; ihtiyaç duyduğunuzda komut dosyaları da kullanabilirsiniz. API spesifikasyonu, test verileri ve mock server aynı proje içinde tutulduğunda testlerin gerçek sözleşmeden kopması daha zor olur.
Denemek için Apidog'u indirebilir ve mevcut bir Insomnia koleksiyonunu içe aktararak yan yana karşılaştırabilirsiniz. Daha fazla seçenek için ücretsiz çevrimiçi API test araçları listesine de bakabilirsiniz.
Insomnia hâlâ sade arayüzü, hızlı başlangıcı ve odaklı istemci deneyimiyle tek geliştiriciler ve küçük ekipler için güçlü bir seçenektir. Doğru araç seçimi, ekibinizin API yaşam döngüsünün ne kadarını tek yerde yönetmek istediğine bağlıdır.
Sıkça sorulan sorular
Insomnia ücretsiz mi?
Evet. Insomnia'nın bireysel kullanım için yeterli olan ücretsiz bir katmanı vardır. İstek gönderme ve test paketlerini yerel olarak çalıştırma gibi temel özellikleri kullanabilirsiniz. Ücretli planlar daha çok ekip işbirliği ve bulut senkronizasyon limitleriyle ilgilidir.
Insomnia hangi protokolleri destekler?
Insomnia HTTP, REST, GraphQL, gRPC, SOAP ve WebSocket destekler. İstek yapılandırması protokole göre değişebilir; ancak yanıt inceleme ve HTTP tabanlı test akışları benzer şekilde çalışır.
Insomnia'da assertion nasıl yazılır?
Koleksiyonda Tests görünümünü açın, bir test paketi oluşturun ve JavaScript testleri ekleyin. Test içinde insomnia.send() ile isteği çalıştırın, ardından Chai tarzı expect ifadeleriyle durum kodunu, header'ları veya gövde alanlarını kontrol edin.
const response = await insomnia.send();
const body = JSON.parse(response.data);
expect(response.status).to.equal(200);
expect(body).to.have.property("id");
Insomnia 8'de ne değişti?
Insomnia 8, bulut öncelikli bir varsayılan modele geçti ve kullanıcıları Kong hesabıyla oturum açmaya ve projeleri buluta senkronize etmeye yönlendirdi. Bu değişiklik, tamamen yerel çalışmayı tercih eden bazı kullanıcılar tarafından olumsuz karşılandı. Sonraki güncellemelerde yerel çalışma seçenekleri daha görünür hale getirildi.
Insomnia testlerini CI hattında çalıştırabilir miyim?
Evet. Inso komut satırı aracını kullanabilirsiniz. Koleksiyonunuzu dışa aktarın veya senkronize edin, ardından CI hattınızda şu komutu çalıştırın:
inso run test "<paket adı>"
Testlerden biri başarısız olursa Inso sıfır olmayan exit code döndürür ve CI derlemesi otomatik olarak başarısız olabilir.
Top comments (0)