📚 Temel Kavramlar — .bru Dosyaları, Koleksiyonlar ve Script
Temel Kavramlar — .bru Dosyaları: Bir .bru dosyası, tek bir yemek tarifi kartı gibidir: malzemeleri (URL, headers, body) ve adımları (varsa script'ler) kısa, insan tarafından oku
Bir .bru dosyası, tek bir yemek tarifi kartı gibidir: malzemeleri (URL, headers, body) ve adımları (varsa script'ler) kısa, insan tarafından okunabilir bir metin bloğunda listeler. Bir koleksiyonun tamamı ise bir tarif kutusudur — bu kartlarla dolu, "kahvaltı" veya "akşam yemeği" gibi gruplandığın alt klasörlere bölünmüş bir klasör.
collections/users/get.bru — gerçek bir istek dosyası şöyle görünür:
Diskte tipik bir Bruno koleksiyonu
Buradaki her dosya düz metindir. Herhangi bir .bru dosyasını VS Code'da açıp Bruno uygulamasını hiç açmadan okuyabilir, hatta düzenleyebilirsin.
Akıl Yürütme #1 — Bruno neden Postman'ın tek pm.test() script kutusu yerine "Assert" ve "Script" diye iki ayrı sekmeye bölüyor? Çoğu kontrol son derece basittir ("status 200 mi?", "body.id 1'e eşit mi?") — her tester'ı bunun için JavaScript yazmaya zorlamak gereksiz bir sürtünmedir, JUnit'in @Test annotation'ının yaygın durumu hallederken sadece gerçekten karmaşık assertion'lar için özel Java koduna inmene benzer. Assert tab düşük sürtünmeli yoldur; Script tab ise mantık basit bir key-operator-value satırı için fazla dinamikleştiğinde tam o noktada vardır.
Environment'lar ve Değişkenler
LEGO benzetmesi: Bir Environment dosyası, bir build için kullanılacak belirli renkteki tuğlaları tutan etiketli bir tepsi gibidir — mat gri tuğlalı bir "dev" tepsisi (güvenli sandbox sunucu) ve parlak altın tuğlalı bir "prod" tepsisi (gerçek sunucu). Aynı modeli (aynı isteği) kurarsın ama hangi tepsiden çektiğini değiştirirsin — isteği sadece başka bir yere işaret etmek için yeniden inşa etmen gerekmez.
Akıl Yürütme #2 — neden URL'yi hardcode etmek yerine değişken kullanılır? Junior bir tester https://api-dev.example.com'u 40 farklı isteğe sabit yazarsa, staging'e geçmek 40 dosyayı düzenlemek ve büyük olasılıkla birini gözden kaçırmak demektir. {{baseUrl}} ile environment değiştirmek tek bir dropdown değişikliğidir — her istek otomatik güncellenir. Bu, Java mühendislerinin connection string'leri sabit metin yerine application.properties'e taşımaktan zaten bildiği aynı akıl yürütmedir.
🎬 Bir .bru Dosyasının Anatomisi: {{baseUrl}} Nasıl Çözülür?
script:post-response
Environment Seçilmemiş
get.bru dosyası aslında dört küçük bölümden oluşur: meta, get, headers, assert. Bugün odak: get bölümündeki {{baseUrl}} nasıl gerçek bir URL'e dönüşüyor?
Adım 1 — meta bölümü sadece görüntüleme bilgisi taşır (sidebar'daki isim). Henüz hiçbir network isteği yok, sadece dosya okunuyor.
Adım 2 — get bölümüne gelinir: {{baseUrl}} bir PLACEHOLDER'dır, henüz gerçek bir domain değil. Bruno bunu çözmek için sağ üstteki seçili Environment dosyasına bakar.