DEV Community

Cover image for Httpbin Nedir? Uç Noktaları, Nasıl Kullanılır ve Alternatifleri
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

Httpbin Nedir? Uç Noktaları, Nasıl Kullanılır ve Alternatifleri

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.

Apidog'u bugün deneyin

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
Enter fullscreen mode Exit fullscreen mode

Yanıtta sunucunun gördüğü başlıkları alırsınız:

{
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "User-Agent": "curl/8.0.1"
  }
}
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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"
}
Enter fullscreen mode Exit fullscreen mode

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}'
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

Basic Auth için:

curl -u user:passwd "https://httpbin.org/basic-auth/user/passwd"
Enter fullscreen mode Exit fullscreen mode

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:

  1. Apidog'u açın.
  2. Yeni bir istek oluşturun.
  3. URL olarak https://httpbin.org/get girin.
  4. Query, header veya body alanlarını doldurun.
  5. İsteği gönderin.
  6. 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
Enter fullscreen mode Exit fullscreen mode

Ardından şu adrese istek atabilirsiniz:

curl http://localhost/get
Enter fullscreen mode Exit fullscreen mode

Makinenizde 80 portu doluysa farklı bir host portu kullanın:

docker run -p 8080:80 kennethreitz/httpbin
Enter fullscreen mode Exit fullscreen mode

Bu durumda URL:

curl http://localhost:8080/get
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Yavaş yanıtları simüle etmek için:

curl https://httpbin.org/delay/5
Enter fullscreen mode Exit fullscreen mode

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 /get ve /post
  • Hata senaryolarını zorlamak için /status/{code}
  • Timeout testleri için /delay/{n}
  • Auth başlıklarını doğrulamak için /bearer ve /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)