Yerel Geliştirmede Genel API'lerden Web Kancaları Nasıl Test Edilir
Yayınlanan: 2022-08-26
Web kancaları, farklı sistemlerden olaylar hakkında sürekli olarak yoklama yapmak zorunda kalmadan bildirimler almak için bir mekanizmadır. Ters API'ler olarak da adlandırılırlar, tüketen sistemin uygulaması gereken "API özelliklerini" sağladığı düşünülebilir. Web kancalarıyla çalışmanın zorluklarından biri, yerel geliştirme ortamınızda web kancalarını işlemek için yazdığınız kodu test etmektir. Bu yazıda size web kancalarını yerel olarak test etmek için kullanılabilecek seçeneklerden bazılarını göstereceğim.
Web kancaları nasıl çalışır?
Dünya giderek daha fazla birbirine bağlı hale geldikçe, uygulamanızın diğer sistemlerden bilgi alması daha olası hale geliyor. Bunu yapmanın bir yolu, herhangi bir yeni bilgi olup olmadığını görmek için diğer sistemi periyodik olarak yoklamaktır, ancak gerçek zamanlı verilere yakın bir şey elde etmek için çok sık anket yapmanız gerekir. Bunu yapmanın daha etkili bir yolu, web kancalarını kullanmaktır.
Web kancası, esasen kaynak sistem tarafından hedef sistemdeki kayıtlı bir URL'ye gönderilen bir HTTP isteğidir. Programlama açısından web kancaları, Gözlemci Modelinin bir uygulaması olarak düşünülebilir. Bu, tüketen sistemin bir uç nokta veya URL kaydederek kaynak sistemdeki olaylardan haberdar olmak için kaydolduğu yerdir.
Çoğu kaynak sistem, bir uç noktayı kaydederken Temel Kimlik Doğrulamayı veya Taşıyıcı Belirteçleri kullanarak kimlik doğrulamayı yapılandırmanıza izin vermek gibi güvenlik önlemlerini destekler. Bir sistemin bildirilmek üzere kaydettirdiği bir olay meydana geldiğinde, kaynak sistem, olayla ilgili bilgileri içeren bir yük ile kayıtlı uç noktaya bir HTTP isteği gönderir.
Web kancaları, modern web uygulamaları tarafından yaygın olarak kullanılmaktadır. Örneğin:
- Paypal, bir ödeme alındığında bildirim göndermek için esasen web kancaları olan Anında Ödeme Bildirimlerini (IPN'ler) kullanır.
- GitHub, bir push olayı meydana geldiğinde CI/CD sistemlerini bilgilendirmek için web kancalarını kullanır.
- Slack, herhangi bir sistemin seçilen Slack kanallarına yayınlanan mesajları göndermesine izin veren gelen web kancalarını uygular.
Web kancalarıyla çalışma
Daha önce belirtildiği gibi, web kancası URL'leri, tüketen sistemin uygulaması gereken ters API'ler olarak düşünülebilir. Tipik olarak, web kancası istekleri, PHP gibi bir programlama dilinde kod yazılarak işlenir. Bir web kancası aracılığıyla gönderilen bilgileri işlemek için herhangi bir kod yazmadan önce, yükün neye benzediğini net bir şekilde anlamanız gerekir. Yükü işlemek için bir kod yazdıktan sonra, kodunuzun web kancasını aldığında doğru durum kodunu döndürmek gibi yapması gerekeni yapıp yapmadığını test edebilmeniz gerekir.
Yükleri İnceleme ve Web kancası Testi
İstek Kutusu gibi araçlar, kaynak sisteminizde yapılandırabileceğiniz, herkesin erişebileceği bir uç nokta oluşturmanıza olanak tanır. Kaydolduğunuz bir olay meydana geldiğinde, kaynak sistem deponuza bir HTTP GET veya POST isteği göndererek yükü incelemenize olanak tanır. İstek Kutusu ayrıca başlıklar gibi öğeleri görüntülemenize olanak vererek hata ayıklamayı ve sorun gidermeyi kolaylaştırır. Bunun nasıl çalıştığını görmek için İstek Kutusu'na gidin ve bunun yerine genel bir çöp kutusu oluştur yazan bağlantıya tıklayın. Kaynak sisteminizde uç nokta olarak yapılandırabileceğiniz bir URL ile karşılaşacaksınız.
Örneğin, WooCommerce belgelerinde açıklanan adımları izleyerek WooCommerce siteme bir web kancası ekledim. "Teslimat URL'si" alanına İstek Kutusu'nun bana sunduğu URL'yi girdim.
Bir sipariş oluşturduğumda, WooCommerce yapılandırılmış uç noktaya bir HTTP isteği gönderdi ve İstek Kutusundaki kutumun URL'sine erişerek yükü hemen inceleyebildim.
Genellikle, genel bir çöp kutusu oluşturmak istemezsiniz, çünkü çöp kutusunun URL'sine sahip olan herkes buna erişebilir. Pipedream ile bir hesap oluşturmanızı gerektiren özel bir çöp kutusu oluşturmak genellikle daha iyidir.
Web kancalarını yerel olarak alma
Web kancalarını işleyen herhangi bir kodu dağıtmadan önce, kodunuzu geliştirme ortamınızda test etmeniz gerekir. Bunun için yerel uç noktanızı, web kancalarını gönderen sistemde hedef URL olarak yapılandırabileceğiniz genel bir URL olarak gösterebilmeniz gerekir. Bunu yapmak için kullanabileceğiniz birkaç araç var.
Yerel Uç Noktaları ngrok ile Gösterme
Yerel bir uç noktayı internete maruz bırakmak için tartışmasız en yaygın kullanılan araç ngrok'tur. ngrok'u kullanmaya başlamak için ücretsiz bir hesap oluşturmanız gerekir.
Ngrok'u yüklemek oldukça basittir. İndirilenler sayfasına gidin, işletim sisteminiz için uygun ikili dosyayı alın, sıkıştırmasını açın ve yolunuzdaki bir dizine kopyalayın. Mac'te ngrok'u yüklemek için alternatif olarak Homebrew'u kullanabilirsiniz:
demlemek ngrok/ngrok/ngrok yükleyin
Ngrok'u kurduktan sonraki adım, bir authtoken eklemektir. Bir hesap oluşturup giriş yaptıktan sonra, gösterge tablonuzu ziyaret ederek jetonunuzu alabilirsiniz.
ngrok yapılandırma eklenti kimlik doğrulaması (belirteç)
Artık yerel uç nokta URL'nizi ngrok kullanarak göstermeye hazırsınız. 80 numaralı bağlantı noktasında çalışan bir web uygulamanız olduğunu varsayalım. Terminalinizde ngrok http 80
yazın. Çıktınız şöyle görünmelidir:
ngrok (çıkmak için Ctrl+C) İsteklerinizi incelemek, yeniden oynatmak ve değiştirmek için http://localhost:4040/ adresini ziyaret edin. Oturum Durumu çevrimiçi Hesap Sanjucta Ghose (Plan: Ücretsiz) Sürüm 3.0.6 Bölge Asya Pasifik (ap) Gecikme 89 ms Web Arayüzü http://127.0.0.1:4040 Yönlendirme https://deec-110-227-84-74.ap.ngrok.io -> http://localhost:80 Bağlantılar ttl açık rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00
Artık, web kancanızı yapılandırırken hedef URL'niz olarak kullanabileceğiniz, herkesin erişebileceği bir URL'niz var, https://deec-110-227-84-74.ap.ngrok.io
.

Ngrok, nasıl çalıştığını yapılandırmanıza izin veren anahtarlar ve seçenekler sunar. ngrok -help
ile hangi seçeneklerin mevcut olduğunu görebilirsiniz.
Sanal Konaklarla ngrok Kullanma
Yerel sitenize, tek bir web sunucusundan birden çok etki alanı sunmanıza izin veren bir mekanizma olan sanal bir ana bilgisayar aracılığıyla hizmet veriyorsunuzdur. Web sunucuları, genellikle hangi web sitesinin sunulması gerektiğini belirlemek için HTTP isteğinin Ana Bilgisayar başlığını kontrol ederek bunu uygular. Sanal bir ana bilgisayar aracılığıyla sunulan bir siteyi ortaya çıkarmak için, ngrok'tan, web sunucunuzun beklediğiyle eşleşmesi için tüm tünelli isteklerin Ana Bilgisayar başlığını yeniden yazmasını istemeniz gerekir. http://hellfishmedia.test
çalışan yerel bir siteniz olduğunu varsayalım. Bu siteyi açığa çıkarmak için aşağıdaki komutu kullanabilirsiniz:
ngrok http --host-header=hellfishmedia.test 80
ngrok'u WordPress ile Kullanmak
ngrok kullanarak göstermeye çalıştığınız URL bir WordPress uç noktasıysa, belgeler, çalıştığından emin olmak için yapmanız gereken birkaç şeyi açıklar.
Laravel Vale ile ngrok Kullanımı
Bir macOS kullanıcısıysanız ve yerel geliştirme ortamınız olarak Laravel Valet'i kullanıyorsanız ngrok'u ayrıca yüklemeniz gerekmez. Vale, herkesin erişebileceği URL'leri göstermek için kullandığı bir ngrok kopyasıyla birlikte gelir. Genel olarak erişilebilir bir URL elde etmek için site dizininize gidebilir ve valet share
komutunu kullanabilirsiniz.
Eğer sitenizi site dizini adından farklı bir alan adı ile ilişkilendirdiyseniz, valet share
komutunu kullanırken alan adını belirtmeniz gerekmektedir. Örneğin, sitenizi http://hellfishmedia.test
kullanıma sunmak için valet link hellfishmedia
kullanıyorsanız, genel olarak erişilebilir bir URL elde etmek için aşağıdaki komutu da kullanmalısınız:
vale paylaşımı hellfishmedia
Yerel Geliştirme Ortamınız Olarak Local'i Kullanmak
Local by WP Engine, WordPress geliştiricileri için çok popüler bir yerel geliştirme ortamıdır. Yerel, herhangi bir ek yazılım gerektirmeden Canlı Bağlantılar özelliğini kullanarak yerel bir uç noktayı ortaya çıkarmayı çok kolaylaştırır.
ngrok için alternatifler
Yerel bir uç noktayı internete maruz bırakmanıza izin veren ngrok'a çeşitli alternatifler mevcuttur. Aşağıda iki tanesini denedim.
yerel tünel
Localtunnel, bir hesap oluşturmanıza gerek kalmadan yerel bir uç noktayı açığa çıkarmanıza olanak tanıyan açık kaynaklı bir alternatiftir. Ancak Node.js'nin kurulu olması gerekir.
Localtunnel'ı kurmak için şu komutu kullanın:
npm install -g localtunnel
localhost:80
üzerinde çalışan bir uygulamayı ortaya çıkarmak için terminalde aşağıdaki komutu çalıştırın:
lt --port 80
Yerel uygulamanız http://hellfishmedia.test
bir sanal ana bilgisayar üzerinden çalışıyorsa, localhost
anahtarını kullanabilirsiniz.
lt --port 80 --localhost hellfishmedia.test
Pagekite
Pagekite, yerel bir uç noktayı açığa çıkarmanıza izin veren başka bir hizmettir. Python ile yazılmıştır ve sisteminizde Python'un kurulu olmasını gerektirir. Bir Mac'te olduğunuzu ve Python 3.x'in kurulu olduğunu varsayarsak, terminalinize aşağıdakini yazarak hızlı bir şekilde başlayabilirsiniz:
curl -O https://pagekite.net/pk/pagekite.py
Bu sizin için pagekite.py
programını getirecektir. Bundan sonra, aşağıdaki komutu kullanarak ve (adınız) yerine uçurtmanızı tanımlamak için kullanmak istediğiniz isimle ilk “uçurtmanızı” oluşturabilirsiniz:
python3 pagekite.py 80 (adınız).pagekite.me
Bu komutu ilk kez çalıştırdığınızda bir hesap oluşturmak için e-posta adresinizi girmeniz istenecektir. Daha sonra bu komutu çalıştırdığınızda şifrenizi girerek hesabınıza giriş yapmanız gerekecektir. Yukarıdaki komut localhost:80
(yourname).pagekite.me
adresinde kullanılabilir hale getirecektir.
hellfishmedia.test
çalışan yerel sitenizi sanal bir ana bilgisayar aracılığıyla göstermek için aşağıdaki komutu kullanabilirsiniz:
pagekite.py lezzetlibrains.test:80 (adınız).pagekite.me +rewritehost
Çözüm
Web kancaları, sistemlerin HTTP üzerinden iletişim kurması için kullanışlı ve artık neredeyse her yerde bulunan bir yoldur. Bir geliştirici olarak, İstek Kutusu gibi hizmetlerin kullanışlı olduğu web kancalarını işlemek için yükü inceleyebilmeniz gerekir. Web kancası işleme kodunu test etmek, yerel uç noktanızı internete açmanız gerektiği anlamına gelir. Bu, ngrok, Localtunnel ve Pagekite dahil olmak üzere bir dizi hizmet tarafından mümkün kılınmıştır.
Web kancalarını işlemek için hiç kod yazmak zorunda kaldınız mı? Öyleyse, web kancalarınızı test etmek için hangi araçları kullandınız? Yorumlarda bana bildirin.