Gerçek bir arka uç kurmadan HTTP istemcinizi test etmek istiyorsanız, httpbin pratik bir başlangıç noktasıdır. İsteklerinizi size JSON olarak geri yansıtır; böylece başlıkların, gövdenin, kimlik doğrulama bilgisinin veya hata yönetiminin gerçekten beklediğiniz gibi çalışıp çalışmadığını hızlıca doğrulayabilirsiniz. Ham bir curl komutundan, Apidog gibi tam teşekküllü bir API istemcisine kadar herhangi bir aracı httpbin'e yönlendirebilirsiniz. Proje httpbin.org adresinde çalışır ve ISC lisansı altında açık kaynaklıdır.
httpbin nedir?
httpbin, HTTP isteklerini test etmek için kullanılan küçük bir istek/yanıt servisidir. Ona bir istek gönderirsiniz; o da aldığı isteği JSON olarak döndürür. Bu sayede istemcinizin gerçekten hangi başlıkları, parametreleri, çerezleri veya gövdeyi gönderdiğini görebilirsiniz.
Python requests kütüphanesinin arkasındaki geliştirici Kenneth Reitz tarafından oluşturulmuş, Python ve Flask ile yazılmıştır.
Örneğin User-Agent başlığınızın doğru gönderilip gönderilmediğini kontrol etmek için:
curl https://httpbin.org/headers
Yanıtta sunucunun gördüğü başlıkları alırsınız:
{
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "curl/8.0.1"
}
}
http://httpbin.org herkese açık örnektir ve hızlı kontroller için kullanışlıdır. Ancak ücretsiz ve paylaşımlı bir servis olduğu için zaman zaman yavaşlayabilir veya erişilemeyebilir. Sık çalışan testler, CI işleri veya ekip içi otomasyonlar için kendi httpbin örneğinizi Docker ile çalıştırmak daha güvenilir bir seçenektir.
Başlıca httpbin uç noktaları
httpbin, farklı HTTP davranışlarını test etmek için hazır uç noktalar sağlar.
| Uç Nokta | Ne Yapar |
|---|---|
/get |
GET isteğinin sorgu argümanlarını, başlıklarını ve kaynak IP adresini döndürür |
/post |
Gönderdiğiniz form verilerini, JSON gövdesini ve başlıkları döndürür |
/put, /patch, /delete
|
Diğer HTTP metodları için aynı yansıtma mantığını uygular |
/status/{codes} |
İstediğiniz durum kodunu döndürür; örneğin /status/404 veya /status/503
|
/headers |
Sadece istek başlıklarını döndürür |
/ip |
Kaynak IP adresinizi döndürür |
/user-agent |
İstemcinizin gönderdiği User-Agent değerini döndürür |
/delay/{n} |
Yanıt vermeden önce n saniye bekler; zaman aşımı testleri için kullanılır |
/basic-auth/{user}/{passwd} |
Doğru Basic Auth bilgileri gönderilirse 200 döndürür |
/bearer |
Authorization başlığında Bearer token olup olmadığını kontrol eder |
/redirect/{n} |
İstemcinizi n adet yönlendirme üzerinden geçirir |
/cookies |
İstemcinin gönderdiği çerezleri döndürür |
/uuid |
Rastgele bir UUID döndürür |
/anything |
Hangi metod kullanılırsa kullanılsın isteğin tamamını yansıtır |
Pratikte en çok işinize yarayacak iki uç nokta şunlardır:
-
/status/{code}: Hata yönetimi, retry ve fallback davranışlarını test etmek için. -
/delay/{n}: Timeout, cancellation ve yavaş ağ senaryolarını test etmek için.
Yansıtma yerine sahte yanıt gövdeleri üretmek istiyorsanız, httpbin'i test verileri için sahte bir API yaklaşımıyla birlikte kullanabilirsiniz.
Bir HTTP istemcisini httpbin ile test etme
En hızlı başlangıç curl kullanmaktır.
1. Query parametrelerini test edin
curl "https://httpbin.org/get?tool=apidog&check=headers"
Yanıtta args, headers ve origin alanlarını görürsünüz:
{
"args": {
"check": "headers",
"tool": "apidog"
},
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "curl/8.x"
},
"origin": "203.0.113.10",
"url": "https://httpbin.org/get?tool=apidog&check=headers"
}
Bu çıktı ile istemcinizin query parametrelerini doğru biçimde gönderdiğini doğrulayabilirsiniz.
2. JSON POST gövdesini test edin
curl -X POST "https://httpbin.org/post" \
-H "Content-Type: application/json" \
-d '{"name": "widget", "qty": 3}'
httpbin şu bilgileri yansıtır:
- Ayrıştırılmış
json - Ham
data - Gönderilen başlıklar
- İstek URL'i
Bu, özellikle Content-Type hatalarını ve JSON serileştirme sorunlarını yakalamak için kullanışlıdır.
3. Hata durum kodlarını zorlayın
Retry veya hata yönetimi kodunuzu test etmek için gerçek API'nizin bozulmasını beklemeniz gerekmez:
curl -i "https://httpbin.org/status/503"
Bu komut gerçek bir 503 Service Unavailable yanıtı döndürür.
Benzer şekilde:
curl -i "https://httpbin.org/status/429"
curl -i "https://httpbin.org/status/500"
curl -i "https://httpbin.org/status/404"
Bu uç noktalarla şu davranışları test edebilirsiniz:
- Retry sayısı
- Backoff stratejisi
- Kullanıcıya gösterilen hata mesajı
- Loglama
- Circuit breaker veya fallback mekanizması
4. Timeout davranışını test edin
İstemcinizin zaman aşımı ayarını doğrulamak için:
curl --max-time 2 "https://httpbin.org/delay/5"
Bu istek 5 saniye bekleyen bir uç noktaya gider, ancak curl tarafında 2 saniyelik timeout tanımlıdır. Böylece istemcinin yavaş yanıtları nasıl ele aldığını test edebilirsiniz.
5. Authorization başlığını doğrulayın
Bearer token gönderiminizi kontrol etmek için:
curl "https://httpbin.org/bearer" \
-H "Authorization: Bearer test-token"
Basic Auth için:
curl -u user:passwd "https://httpbin.org/basic-auth/user/passwd"
Doğru kullanıcı adı ve parola gönderilirse authenticated: true yanıtı alırsınız.
Apidog ile httpbin isteği gönderme
Terminal kullanmak zorunda değilsiniz. Herhangi bir REST istemcisi bu URL'lere erişebilir.
Grafik arayüzlü bir akış için:
- Apidog'u açın.
- Yeni bir istek oluşturun.
- URL olarak
https://httpbin.org/getgirin. - Query, header veya body alanlarını doldurun.
- İsteği gönderin.
- Dönen JSON yanıtında httpbin'in ne aldığını kontrol edin.
Bu yaklaşım özellikle şunlar için kullanışlıdır:
- Ortam değişkenleriyle farklı base URL'leri test etmek
- Header ve token değerlerini saklamak
- Yanıtları geçmişte karşılaştırmak
- Testleri ekip arkadaşlarıyla paylaşmak
- Tek seferlik
curlçağrılarını tekrarlanabilir testlere dönüştürmek
Terminal öncelikli bir kurulum istiyorsanız, TUI REST API istemcileri listesine de bakabilirsiniz.
httpbin'i Docker ile kendi kendine barındırma
Herkese açık http://httpbin.org örneği tek seferlik kontroller için yeterlidir. Ancak CI, otomasyon veya sık çalışan testlerde dış servise bağımlı kalmak istemeyebilirsiniz.
Kendi httpbin örneğinizi Docker ile çalıştırmak için:
docker pull kennethreitz/httpbin
docker run -p 80:80 kennethreitz/httpbin
Ardından şu adrese istek atabilirsiniz:
curl http://localhost/get
Makinenizde 80 portu doluysa farklı bir host portu kullanın:
docker run -p 8080:80 kennethreitz/httpbin
Bu durumda URL:
curl http://localhost:8080/get
Docker görüntüsü Docker Hub'da kennethreitz/httpbin olarak yayınlanmıştır.
CI içinde kullanmak için örnek akış:
docker run -d --name httpbin -p 8080:80 kennethreitz/httpbin
curl --fail http://localhost:8080/status/200
curl --fail "http://localhost:8080/get?ci=true"
docker stop httpbin
docker rm httpbin
Bu kurulumla:
- Test trafiğiniz dışarı çıkmaz.
- Paylaşımlı servis limitlerine takılmazsınız.
- Testleriniz daha deterministik hale gelir.
- httpbin erişilemediği için CI kırılmaz.
httpbin alternatifleri
httpbin tek bir işi iyi yapar: HTTP isteğini yansıtır. Ancak her test senaryosu için yeterli değildir.
Postman Echo
Postman Echo, httpbin'e benzer bir hosted echo servisidir.
Örnek:
curl https://postman-echo.com/get?foo=bar
GET, POST, kimlik doğrulama ve yardımcı uç noktalarını destekler. Detaylar için Postman Echo belgelerine bakabilirsiniz.
http://httpbin.org erişilemez durumdaysa hızlı bir yedek olarak kullanılabilir.
Kendi kendine barındırılan httpbin
Docker ile çalıştırdığınız httpbin örneği, herkese açık servisle aynı uç noktaları sağlar. Özel ağlarda, CI işlerinde veya güvenilirlik gerektiren testlerde en iyi seçenektir.
Mock servisleri
httpbin gelen isteği yansıtır; gerçekçi domain verisi üretmez.
Eğer şunlara ihtiyacınız varsa mock servis kullanmanız daha uygundur:
- Kullanıcı listesi
- Sipariş nesnesi
- Sayfalanmış sonuçlar
- Hata gövdeleri
- Şemaya uygun örnek yanıtlar
Apidog, şemanızdan mock yanıtlar üretmenizi sağlayan yerleşik mocking özellikleri sunar. Böylece arka uç henüz hazır değilken ön uç geliştirmesine devam edebilirsiniz.
İstemci ve test katmanı olarak Apidog
httpbin, istek gönderdiğiniz hedeftir. Apidog ise bu istekleri tasarladığınız, gönderdiğiniz, test ettiğiniz ve otomatikleştirdiğiniz araçtır.
Apidog ile şunları yapabilirsiniz:
- Uç noktaları tasarlamak
- HTTP istekleri göndermek
- Yanıtlara assertion eklemek
- İstekleri senaryolara zincirlemek
- Testleri CI içinde çalıştırmak
- Mock yanıtlar üretmek
Yani httpbin küçük bir test servisidir; Apidog ise API geliştirme ve test sürecinin çalışma alanıdır.
Rastgele curl çağrılarından kaydedilmiş, tekrarlanabilir testlere geçmek istiyorsanız, mevcut isteklerinizi Apidog'a taşıyıp assertion ekleyebilirsiniz. Kurulum gerektirmeyen seçenekleri karşılaştırmak için ücretsiz çevrimiçi API test araçları rehberine bakabilirsiniz.
Sıkça Sorulan Sorular
httpbin ücretsiz mi?
Evet. Herkese açık http://httpbin.org örneği ücretsizdir ve hesap gerektirmez. Kaynak kodu ISC lisansı altında açıktır, bu nedenle kendi ortamınızda da ücretsiz çalıştırabilirsiniz.
httpbin hâlâ bakımı yapılan bir proje mi?
Kod tabanı postmanlabs/httpbin GitHub deposunda yer alır ve zaman zaman güncellenir. Ancak herkese açık http://httpbin.org örneği kararsız olabileceği için kritik testlerde Docker ile kendi kopyanızı çalıştırmanız daha güvenlidir.
httpbin ile webhook test edebilir miyim?
Tam olarak değil. httpbin kendisine gönderilen isteği yansıtır, ancak üçüncü taraf servislerden gelen webhook'ları yerel makinenize iletmez.
Webhook testleri için tünelleme veya özel denetim araçları kullanmanız gerekir. Daha fazla bilgi için localhost API'lerini ve webhook'ları test etme rehberine ve webhook'ların nasıl çalıştığına dair başlangıç yazısına bakabilirsiniz.
httpbin ile Postman Echo arasındaki fark nedir?
İkisi de HTTP isteğinizi JSON olarak geri yansıtır. httpbin açık kaynaklı Python/Flask tabanlı orijinal servistir. Postman Echo ise Postman tarafından barındırılan benzer bir servistir.
Hızlı testlerde erişilebilir olanı kullanabilirsiniz. Kritik ve tekrar eden testlerde kendi httpbin örneğinizi çalıştırmanız daha iyi olur.
httpbin ile hata yönetimini test edebilir miyim?
Evet. /status/{code} ile istediğiniz HTTP durum kodunu zorlayabilirsiniz:
curl -i https://httpbin.org/status/500
curl -i https://httpbin.org/status/429
curl -i https://httpbin.org/status/404
Yavaş yanıtları simüle etmek için:
curl https://httpbin.org/delay/5
Bu uç noktalar retry, timeout ve hata işleme mantığını test etmek için en pratik yöntemlerden biridir.
Özet
httpbin, HTTP istemcisi geliştirirken hızlı doğrulama yapmak için küçük ama etkili bir araçtır.
Kullanım özeti:
- Gönderdiğiniz query, header ve body değerlerini görmek için
/getve/post - Hata senaryolarını zorlamak için
/status/{code} - Timeout testleri için
/delay/{n} - Auth başlıklarını doğrulamak için
/bearerve/basic-auth - CI veya güvenilir testler için Docker ile kendi httpbin örneğiniz
Bir yansıtma servisinden daha fazlasına ihtiyacınız olduğunda mock yanıtlar, assertion'lar ve otomatik test senaryoları kullanmanız gerekir. Apidog, httpbin'e istek göndermek, mock servisler oluşturmak ve doğruladığınız davranışları tekrarlanabilir API testlerine dönüştürmek için kullanılabilir. Apidog'u indirin ve hızlı httpbin kontrollerinizi sürdürülebilir test akışlarına taşıyın.
Top comments (0)