📚 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.