AVALANCHE —TEKNİK İP UÇLARI #2- “jq” ile API çağrılarını okunaklı hale getirmek

Published by AVIX on

Herkese Merhaba !

Avalanche projesi için testnet’de node kuran arkadaşlar, Avalanche konsensus’unu kullanan blokzincir ile API’ler aracılığıyla etkileşimde bulunarak çeşitli komutlar çalıştırmaktadırlar. Bu yazıda, curl ile çalıştırılan komutların çıktılarını nasıl formatlayıp güzel bir şekilde okunaklı olarak elde edebileceğinizi ve çok fazla kullanılan API, curl gibi kavramların neler olduğunu öğreneceksiniz.

Öncelikle yazımın başlığında geçen “API” terimini açıklamak istiyorum. İngilizce “Application Programming Interface” kelimelerinin kısaltması olan API’’ler dilimize “Uygulama Programlama Arayüzü” olarak çevrilen, bir uygulamanın/servisin veya platformun sahip olduğu işlevlerine dışarıdan veya uzaktan izin verilen sınırlamalar dahilinde erişilip kullanılmasını sağlayan yapılardır. API, bir sunucunun üzerindeki uygulamaya farklı platformlardan ulaşılmasına ve cevap alınmasına olanak sağlar. API’ler üzerinden gerçekleştirmeyi amaçladığınız işlemler için, erişim sağlamak istediğiniz uygulama tarafından size özel sunulan erişim bilgilerini kullanmanız gerekir. Burada önemli olan istemci tarafında geliştirilen uygulamanın özelleştirilmiş yeteneklere sahip olması ve bu yetenekleri de API erişimleri ile sağlamasıdır. Avalanche fonksiyonlarına erişim için çok fazla API sunmaktadır. Avalanche API’leri ile ilgili detaylı bilgi almak için buraya tıklayabilirsiniz.

Avalanche’ın API’lerini çağırırken aşağıda verdiğim örnektekine benzer “curl” komutları kullanılmaktadır. Curl, ingilizce “client url” sözcüklerinin kısaltılmasıyla elde edilmiş bir php plugin’idir ve Daniel Stenberg tarafından geliştirilmiştir. Plugin’ler ise mevcut programa yeni özellikler eklenilmesine olanak sağlayan yazılım bileşenleridir. Avalanche’ın API’lerine “curl” kullanılarak erişilebilmektedir.

Avalanche için örnek bir API çağrısı ve cevabı şu şekildedir:

Eğer testnet’de kurulum yaptıysanız, curl kullanarak çağrılan komutların — özellikle çıktıları uzun olanların — ekranda pek düzgün ve formatlı olarak görünmediğini fark etmişsinizdir. API çağrısının çıktısını okumak zor olabilir.

Peki, bunun bir çaresi var mı? Formatlı ve göze güzel görünen, okunaklı komut çıktıları elde etmek ve bunları filtrelemek mümkün mü?

Bu sorunun cevabı “jq” kullanmakta saklı. Kurulumdan başlayalım.

jq yu kurmak için Ubuntu Linux işletim sisteminde aşağıdaki komutu girmek gereklidir.

sudo apt-get install jq

jq ‘yu tek komut ile yükledikten sonra, artık kullanıp nasıl bir fark yarattığını görebiliriz. Örneğin “admin.getNodeID” API ‘sini çağıralım ve gelen çıktıya bakalım:

“jq” kullanmadan gelen ekran şu şekilde:

curl -s -X POST --data '{
"jsonrpc": "2.0",
"method": "admin.getNodeID",
"params":{},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/admin

“jq” kullanıldığında gelen ekran görüntüsü ise aşağıdaki gibidir:

curl -s -X POST --data '{
"jsonrpc": "2.0",
"method": "admin.getNodeID",
"params":{},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/admin | jq

jq” bu örnekte görüldüğü gibi oldukça pratik, hayatı kolaylaştıran kullanışlı bir araçtır.

Bir diğer örneğe bakalım. Bu örnekte çalıştırdığımız komutun çıktısını çok uzun ve karmaşık olduğu için filtreleyelim ve içinde ilgilendiğimiz belli bir kelimeyi arayalım.

“NODE ID” miz validatör listesinde var mı kontrolünü yapalım.

Öncesi: jq” kullanılmadığında komutumuzu girdiğimizde gelen ekranda tüm validatör listesi bulunmakta ve gözle bakıp kendi node’umuzu bulmak baya zor olmaktadır.

curl -X POST --data '{
"jsonrpc": "2.0",
"method": "platform.getCurrentValidators",
"params": {},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P

Sonrası: komutun çıktısında arama yapmak için “jq” kullanalım, yani sadece kendi node id’mizi aratalım ve gelen çıktıdaki farkı görelim (aşağıdaki koyu renkle yazan kısma dikkat).

curl -X POST --data '{
"jsonrpc": "2.0",
"method": "platform.getCurrentValidators",
"params": {},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P | jq '.result.validators[] | select(.id == "YOUR NODE ID ") | .id'

Umarım “jq” yu faydalı bulup kullanırsınız. Hayatı kolaylaştıran araçları seviyoruz:)

Avalanche ile ilgili teknik sorularınız varsa Discord kanalından her zaman iletip destek alabilirsiniz.

Teşekkürler.

Avalanche ile ilgili Linkler ve Platformlar:

Website | Whitepapers | Twitter | Discord | GitHub | Documentation | Explorer | Avalanche-X | Telegram | Facebook | LinkedIn | RedditYouTube


AVALANCHE —TEKNİK İP UÇLARI #2- “jq” ile API çağrılarını okunaklı hale getirmek was originally published in Avalanche Hub on Medium, where people are continuing the conversation by highlighting and responding to this story.

Categories: AvaxNews