Gerçek bir arka uç kurmadan bir HTTP istemcisini test etmeniz gerektiğinde, muhtemelen httpbin ile karşılaşmışsınızdır. Bu, isteğinizi size geri yansıtan küçük bir web hizmetidir, böylece kodunuzun ne gönderdiğini tam olarak görebilirsiniz. Bu da onu başlıkları hata ayıklamak, istemcinizin bir 500 hatasını nasıl işlediğini kontrol etmek veya kimlik doğrulama belirtecinizin isteğe gerçekten ulaştığını doğrulamak için mükemmel kılar. Ham bir curl komutundan, Apidog gibi tam teşekküllü bir istemciye kadar herhangi bir aracı ona yönlendirebilirsiniz. Proje httpbin.org adresinde bulunmaktadır ve ISC lisansı altında açık kaynaklıdır.
httpbin nedir?
httpbin, bir HTTP istek ve yanıt hizmetidir. Ona bir istek gönderirsiniz; o da isteğin JSON açıklamasını size geri gönderir. Başka bir şey değil. Popüler Python requests kütüphanesinin arkasındaki geliştirici Kenneth Reitz tarafından oluşturulmuştur ve Python ile Flask kullanılarak yazılmıştır.
Değeri basitliğinde yatmaktadır. Diyelim ki HTTP istemcinizin bir User-Agent başlığını doğru ayarlayıp ayarlamadığını bilmek istiyorsunuz. https://httpbin.org/headers adresine ulaştığınızda, yanıt sunucunun aldığı her başlığı listeler. Veritabanı yok, giriş yok, kurulum yok. Kendi isteğinizin temiz bir yansımasını alırsınız.
httpbin.org herkese açık bir örnektir ve hızlı kontroller için kullanışlıdır. Ücretsiz bir paylaşımlı hizmet olduğu için yavaşlayabilir veya kısa süreliğine kullanılamaz hale gelebilir. Bakım yıllar içinde değişti; kod artık postmanlabs/httpbin GitHub deposunda yer alıyor ve Kong gibi topluluk forkları da etrafta dolaşıyor. Sık sık çalıştırdığınız her şey için kendi kendine barındırma daha güvenli bir seçenektir. Bununla ilgili daha fazla bilgiyi aşağıda bulabilirsiniz.
Başlıca httpbin Uç Noktaları
httpbin, her biri belirli bir test türünü hedefleyen bir dizi uç noktayı kullanıma sunar. İşte en çok kullanacağınız uç noktalar.
| Uç Nokta | Ne Yapar |
|---|---|
/get |
Bir GET isteğinin sorgu argümanlarını, başlıklarını ve kaynak IP'sini 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 de aynı mantık |
/status/{codes} |
İstediğiniz durum kodunu döndürür, örneğin /status/404 veya /status/503 |
/headers |
Sunucunun gördüğü 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 dizesini döndürür |
/delay/{n} |
Zaman aşımı testi için yanıt vermeden önce n saniye bekler (en fazla 10) |
/basic-auth/{user}/{passwd} |
Yalnızca eşleşen Temel Kimlik Doğrulama bilgileri gönderirseniz 200 döndürür |
/bearer |
Authorization başlığında bir Bearer token olup olmadığını kontrol eder |
/redirect/{n} |
Yönlendirme işlemeyi test etmek için sizi n sayıda yönlendirme üzerinden gönderir |
/cookies |
İstemcinizin gönderdiği çerezleri döndürür |
/uuid |
Rastgele bir UUID döndürür |
/anything |
Hangi metodu kullanırsanız kullanın, istekle ilgili her şeyi geri yansıtır |
Burada sessiz kahramanlar /status/{codes} ve /delay/{n} uç noktalarıdır. Gerçek bir API'ye karşı tetiklemesi zor olan hata yollarını ve yavaş yanıtları isteğe bağlı olarak zorlamanıza olanak tanır. Yansımalar yerine sahte yanıt gövdeleri oluşturmak isterseniz, httpbin'i test verileri için sahte bir API ile eşleştirin.
Bir istemciyi test etmek için httpbin nasıl kullanılır?
httpbin'i denemenin en hızlı yolu curl kullanmaktır. Sorgu parametresiyle bir GET isteği gönderin:
curl "https://httpbin.org/get?tool=apidog&check=headers"
Sunucunun aldığı args, headers ve origin IP adresinizi gösteren bir JSON nesnesi alırsınız. Bu, istemcinizin beklediğiniz şeyi gönderdiğini doğrular.
Kodunuzun bir POST gövdesini nasıl işlediğini test etmek için biraz JSON gönderin:
curl -X POST "https://httpbin.org/post" \
-H "Content-Type: application/json" \
-d '{"name": "widget", "qty": 3}'
httpbin ayrıştırılmış json, ham data ve başlıkları yansıtır, böylece Content-Type ve yükünüzün sağlam bir şekilde ulaştığını doğrulayabilirsiniz.
Şimdi yeniden deneme mantığınızı test etmek için bir hata zorlayın:
curl -i "https://httpbin.org/status/503"
Gerçek bir 503 Hizmet Kullanılamıyor yanıtı alırsınız. İstemcinizin hata yönetimini buna yönlendirin ve yeniden denediğini veya sorunsuz bir şekilde başarısız olduğunu doğrulayın. Yavaş bir uç noktayı simüle etmek ve zaman aşımı ayarlarınızı kontrol etmek için /delay/5 kullanın.
Terminalde kalmak zorunda değilsiniz. Herhangi bir REST istemcisi bu aynı URL'lere erişebilir. Grafiksel bir iş akışını tercih ediyorsanız, https://httpbin.org/get adresini Apidog'a yapıştırın, isteği gönderin ve yanıtı sözdizimi vurgulama, kaydedilmiş geçmiş ve ortam değişkenleriyle inceleyin. Bu, farklı ortamlar arasında yanıtları karşılaştırmak veya bir testi bir ekip arkadaşınızla paylaşmak istediğinizde kullanışlıdır. Terminal öncelikli bir kurulum için, bu TUI REST API istemcilerine bakın.
httpbin'i Docker ile Kendi Kendine Barındırma
Herkese açık httpbin.org örneği tek seferlik kontroller için iyidir, ancak ihtiyacınız olduğunda hız sınırlı olabilir veya kapalı olabilir. Kendi kopyanızı çalıştırmak bu sorunu giderir ve test trafiğinizi özel tutar. Resmi Docker görüntüsü bunu iki komutluk bir iş haline getirir.
Görüntüyü çekin ve çalıştırın:
docker pull kennethreitz/httpbin
docker run -p 80:80 kennethreitz/httpbin
Hizmet artık 80 numaralı bağlantı noktasında dinliyor. http://localhost/get adresine eriştiğinizde, herkese açık siteyle aynı davranışı, ağ gecikmesi olmadan ve paylaşılan hız limitleri olmadan elde edersiniz. Güvenilirliğin önemli olduğu ve harici bir hizmete bağımlı olmak istemediğiniz CI (Sürekli Entegrasyon) hatlarında istediğiniz kurulum budur. Görüntü Docker Hub'da kennethreitz/httpbin olarak yayınlanmıştır.
Makinenizde 80 numaralı bağlantı noktası kullanılıyorsa, örneğin docker run -p 8080:80 kennethreitz/httpbin komutunu kullanarak farklı bir ana bilgisayar bağlantı noktası eşleştirin, ardından http://localhost:8080/get adresini kullanın.
httpbin Alternatifleri
httpbin bir işi iyi yapar, ancak tek seçenek değildir ve tam bir test platformu da değildir. İhtiyaçlarınıza göre dürüst alternatifler aşağıdadır.
Postman Echo. Postman tarafından işletilen, httpbin ile aynı ruha sahip, barındırılan bir echo hizmeti. https://postman-echo.com/get adresine ulaştığınızda isteğiniz size geri yansıtılır. GET, POST, kimlik doğrulama ve yardımcı uç noktalarını kapsar. Tam liste için Postman Echo belgelerine bakın. Eğer httpbin.org kapalıysa, Echo sağlam bir yedek olabilir.
Kendi kendine barındırılan httpbin. Yukarıda gösterildiği gibi, Docker görüntüsünü çalıştırmak, size tam kontrol ve paylaşılan limitler olmadan tamamen aynı uç noktaları sağlar. Özel bir ağ içinde veya bir CI işinde httpbin davranışına ihtiyacınız olduğunda en iyi seçimdir.
Mock hizmetleri. httpbin isteğinizi yansıtır; gerçekçi alan verileri döndürmez. Sahte ama yapılandırılmış yanıtlar (bir kullanıcı listesi, bir sipariş nesnesi, sayfalanmış sonuçlar) gerektiğinde, bunun yerine bir mock sunucuya başvurun. Apidog, şemanızdan gerçekçi yanıtlar üreten yerleşik akıllı alay (mocking) özelliğine sahiptir, böylece arka uç henüz mevcut olmadan ön ucunuz bir uç noktaya karşı geliştirme yapabilir.
İstemci ve Test Katmanı olarak Apidog. httpbin, istek gönderdiğiniz bir hedeftir. Apidog ise bu istekleri gönderdiğiniz araçtır. Bu, tam teşekküllü bir API istemcisi ve test platformudur: uç noktaları tasarlar, istekleri gönderir, onaylamalar yazar, istekleri senaryolara zincirler ve bunları CI'da çalıştırır. httpbin'e erişmek için Apidog'u kullanırsınız veya basit bir yansıma ihtiyacınızın ötesine geçtiğinde onu değiştirmek için. İkisi eşdeğer değildir; httpbin küçük bir hizmettir, Apidog ise etrafındaki çalışma tezgahıdır. Rastgele curl çağrılarından kaydedilmiş, tekrarlanabilir testlere geçmeye hazır olduğunuzda, Apidog mevcut isteklerinizi içe aktarmanıza ve onaylamalar eklemenize olanak tanır. Kurulum gerektirmeyen seçeneklerin daha geniş bir incelemesi için, bu ücretsiz çevrimiçi API test araçlarına bakın.
Sıkça Sorulan Sorular
httpbin kullanmak ücretsiz midir? Evet. Herkese açık httpbin.org örneği ücretsizdir ve hesap gerektirmez. Kaynak kodu ISC lisansı altında açıktır, bu nedenle ücretsiz olarak kendiniz de çalıştırabilirsiniz.
httpbin hala bakımı yapılıyor mu? Kod tabanı postmanlabs/httpbin GitHub deposunda yer alıyor ve ara sıra olsa da sürekli bir ilgi görüyor. httpbin.org'un kararsız olabilmesi nedeniyle, birçok ekip önemli her şey için kendi kendine barındırılan bir Docker kopyasını sabitler.
httpbin'i webhook'ları test etmek için kullanabilir miyim? Pek sayılmaz. httpbin ona gönderdiğiniz istekleri yansıtır, ancak üçüncü bir tarafın etkinliğini alıp yerel makinenize iletmez. Bunun için özel bir tünel açma veya denetim hizmeti kullanın; localhost API'lerini ve webhook'ları test etme hakkındaki bu kılavuza ve webhook'ların nasıl çalıştığına dair bu başlangıç rehberine bakın.
httpbin ile Postman Echo arasındaki fark nedir? Neredeyse aynı şeyi yaparlar: HTTP isteğinizi JSON olarak geri yansıtırlar. httpbin, orijinal açık kaynaklı Python ve Flask hizmetidir; Postman Echo ise Postman tarafından barındırılan bir hizmettir. Hangisi ayaktaysa ve erişilebilir durumdaysa onu seçin.
httpbin ile hata yönetimini test edebilir miyim? Evet. /status/{code} adresini kullanarak /status/500 veya /status/429 gibi herhangi bir durum kodunu zorlayın ve yavaş yanıtları simüle etmek için /delay/{n} kullanın. Bu, istemcinizin yeniden deneme ve zaman aşımı mantığını çalıştırmanın en temiz yoludur.
Özet
httpbin küçük, keskin bir araçtır: bir HTTP istemcisini ona yöneltin ve isteğinizin geri yansıtıldığını görün. Neyi gönderdiğinizi doğrulamak için /get ve /post'u, hata yollarını zorlamak için /status ve /delay'i ve CI'da özel bir kopya çalıştırmak için Docker görüntüsünü kullanın. Bir yansımadan daha fazlasına ihtiyacınız olduğunda, gerçekçi mock'lara, kaydedilmiş test paketlerine ve onaylamalara başvurun.
İşte tam teşekküllü bir platformun faydaları burada kendini gösterir. Apidog size httpbin'e erişmek için bir API istemcisi, onu değiştirmek için akıllı alay (mocking) ve az önce doğruladığınız davranışı sabitlemek için otomatik testler sunar. Apidog'u indirin ve hızlı httpbin kontrollerinizi tekrarlanabilir testlere dönüştürün.
