API nedir?

Mar 20 2023
Kodunuzda API kullanmak neden LEGO ile oynamak gibidir? Okuduğunuz çoğu kodlama eğitiminde "API" terimini duymuş olabilirsiniz.

Kodunuzda API kullanmak neden LEGO ile oynamak gibidir?

Unsplash'ta Xavi Cabrera'nın fotoğrafı

Okuduğunuz çoğu kodlama eğitiminde "API" terimini duymuş olabilirsiniz. "API"yi Google'da ararsanız, "Uygulama Programlama Arayüzü"nün ne anlama geldiğine dair büyük bir paragraf ve "REST" ve "protokoller" vb.

API'ler hakkında bilmeniz gereken tek şey, bunların görevleri otomatikleştirmek ve veri almak için kullanabileceğiniz işlevlerin bir listesi olduğudur . Örneğin şunları yapabilirsiniz:

  • Gelen kutunuzun kodla okunmasını ve filtrelenmesini otomatikleştirmek için Gmail API'sini kullanın
  • Metrik birimleri kodla İngiliz ölçü birimlerine otomatik olarak dönüştüren bir bot oluşturmak için Reddit API'sini kullanın
  • Fitbit'inizden veri almak ve telefonunuzdaki özel bir uygulamaya göndermek için Fitbit API'sini kullanın
  • Reddit gibi bir forum için bir API'yi nasıl kullanabiliriz. Unsplash'ta Xavi Cabrera tarafından orijinal fotoğraf
LEGO'nun Bir Tuğla Seç sitesi ve kataloğu.

Aynı şekilde, API'ler, programlar oluşturmanıza izin veren küçük kod parçaları sağlar. Aşağıdaki gibi işlevlere sahiptirler:

  • getLikeCount()
  • createGoogleSheet()
  • sendEmail()

Bu “kod parçalarının” ne olduğunu nasıl bilebiliriz?

Her API , bir tür LEGO kataloğu gibi, onu kullanabileceğiniz tüm yolları listeleyen belgelerle birlikte gelir . Size bir API ile yapabileceğiniz her şeyi gösterir; bu, Reddit API için "yorum gönder" veya "bir gönderiyi kaydet" olabilir. Belgeler genellikle çevrimiçi olarak bir şirketin web sitesinde, genellikle bazı gizli geliştirici sayfalarında bulunur . " Yapabileceğiniz şeyler", "API yöntemleri" olarak adlandırılır .

Slack API, kaygan belgelere sahiptir.

Bazı belgeler diğerlerinden daha iyidir , ancak belgeler sonuçta kendi kodunuzda kullanabileceğiniz önceden hazırlanmış kod parçalarının ve işlevlerin bir listesidir .

En Kolay API: IP Adresinizi Almak

Yalnızca tek bir parçası olan bir API'ye bakalım: IP adresinizin ne olduğunu size söyleyen IPify API .

IP adresi, bilgisayarınız için bir telefon numarası veya posta adresi gibidir. İnternete sizi nerede bulacağını söyler. Web sitelerinin de kendi IP adresleri vardır.

IPify.org'a bir komut gönderip IP adresimizin ne olduğunu soracağız. Bu, hem Mac OS hem de Windows üzerinde çalışır.

Terminal'i (Mac) veya Komut İstemi'ni (Windows) açın ve aşağıdakini yazın:

curl 'https://api.ipify.org?format=json'

      
                
What the command looks like in Terminal on a MacBook.

{"ip": "68.142.10.250"}

Bunun gerçek IP adresiniz olduğunu doğrulamak için WhatIsMyIPAddress.com adresini ziyaret edin .

JSON, modern web API'leri için en popüler veri biçimlerinden biridir. {“key”: value}Tüm verilerin bir etiketi olacak şekilde her şeyi biçimlendirir . Diğer API'ler , benzer bir biçime sahip olan XML kullanabilir <Key>value</Key>ve birçok API, ikisi arasında seçim yapmanıza izin verir.

Bu, birçok web API'sinin özüdür. Bir web sitesinden bazı veriler istiyoruz ve bu verilerle yanıt veriyor. NASA , USGS ve USFDA API'leri gibi bilimsel araştırmalarda yaygın olarak kullanılan API'ler bu şekilde çalışır. Sadece istersek uzay uyduları, ABD'deki dağların yüksekliği ve FDA onaylı ilaçların listesi hakkında veri alabiliriz.

Kullanıcı Etkinliğini Otomatikleştirmeye Ne Dersiniz?

Ya bir web sitesinden sadece veri almak istemiyorsak? Botlar yapmaya veya iş günümüzü otomatikleştirmeye ne dersiniz?

Burası daha karmaşık API'lerin devreye girdiği yer. Hala bir web sitesi veya uygulamayla konuştuğumuz ve "Bu verileri almak (veya bu verileri göndermek) istiyorum" dediğimiz tekil komutlar içeriyorlar. Ve uygulama buna göre yanıt verir. Ancak şimdi, daha karmaşık etkinlikleri gerçekleştirmek için birden çok komutu bir araya getiriyoruz.

Unsplash'ta Aedrian'ın fotoğrafı

Çok Adımlı Bir Örnek: Reddit API

Reddit, dünyanın en büyük çevrimiçi forumudur. Reddit, API'lerini çevrimiçi olarak yayınlar ve API'leri ile yapabileceğiniz her şeyi soldaki kenar çubuğunda listeler.

Reddit'in API'sine genel bakış. Çoğu popüler web sitesinde (biraz gizli) bir API sayfası bulunur.

Kenar çubuğunda arkadaş listemizi, karmayı, kupaları ve daha fazlasını almak için kullanabileceğimiz yöntemler var. Bir kullanıcının web sitesinde yapabileceği her eylemin kendi ilgili API yöntemi vardır.

Reddit API sayfasını ziyaret edip aşağı kaydırırsak, tüm normal kullanıcı etkileşimlerini ve bunlara karşılık gelen API yöntemlerini gösteren bir bölüm, bağlantılar ve yorumlar var . Bunları bir bot hesabı veya benzeri bir şey yapmak için kullanabiliriz.

Reddit API'sini kullanırsak otomatik olarak yapabileceğimiz şeylerin listesi.

Yorum yapma ( /api/comment), gönderileri takip etme ve kaydetme gibi günlük kullanıcı etkileşimlerimiz var . Reddit API, bunları kodla yapmayı mümkün kılar. Tüm yöntemlerdeki önek garip görünüyor, ancak bunu birazdan açıklayacağız ./api/

Buna karşın, Google Arama API'sinin yalnızca bir yöntemi vardır ve o da arama yapmaktır :

Google Arama API'sinden "liste" yönteminin (temelde "arama") açıklaması.

Google Arama API'si basittir, çünkü Google, programcıların Google Arama ile yapmayı önemsediği tek bir şey olduğunu bilir: arama.

Bu, her API'nin amacıdır, normal web sitesi veya uygulamadaki tüm etkinlikleri ve seçenekleri, Python, JavaScript, Bash, Java, R, vb. .

  • Bir web sitesi API'si, normal kullanıcı etkileşimlerini (oturum açma, yorum yapma, arama, bir şeyleri silme) mümkün olduğunca az kodla yapabilmenizi ister.
  • Giyilebilir bir API, mümkün olan en az kodla veri toplayabilmenizi, kullanıcıya bir uyarı gönderebilmenizi veya giyilebilir cihazdaki ayarları değiştirebilmenizi ister.
Bu arabanın bir API'si olsaydı, bir "lastik" özniteliği ve "drive()" yöntemi olurdu. Fotoğraf: Eric & Niklas, Unsplash'ta

Bir API Kullanmanın Kodda Nasıl Göründüğü

Peki bu kodda nasıl görünüyor? Reddit API, yorum yönteminin çağrıldığını söylüyor /api/comment. Bu ne anlama gelir? /api/commentBir Python dosyası koyup bir gün diyemeyiz, değil mi ? Sağ.

Bir web sitesiyle konuşmak için bir API kullanmak ile giyilebilir bir cihazın API'sini kullanmak arasında birkaç fark vardır. Birkaç satır kodla karmaşık şeyler yapmanıza izin verdiği için ikisi de hala LEGO benzeri, ancak kodun kendisi oldukça farklı görünüyor. Bu nedenle, onlar için ayrı örnekler vereceğiz.

Daha Derinlemesine: Kodda Web API'leri

Reddit API yöntemlerinin bir grup eğik çizgi ile listelendiğini gördük:

Bu hiç Python'a, JavaScript'e ya da koda benzemiyor. Diyor mu /api/? Bu nedir?

Bunlar , tıpkı Chrome veya Firefox'a yazdıklarınız gibi, aslında HTTP bağlantılarının parçalarıdır .

Yine de neden web bağlantıları? Bunları doğrudan kodumuza mı koyacağız? Evet ve iyi bir nedenle.

Reddit, Gmail ve hatta NIH veya NASA'nın API'leri gibi bir web API kullandığımızda , kodumuz temelde bir web sitesiyle konuşuyor. links/that/look/like/thisWeb siteleri , sayfalarını ve işlevlerini ayırmak için kullanır . Google yaşıyor google.com, ancak arama sonuçları yaşıyor google.com/search.

Sonunda bu uç noktayı kodumuzda şöyle bir yere koyacağız:

google_search_api = "https://www.googleapis.com/customsearch/"

Şimdi, kod gerçekten bir web sitesiyle değil, bir sunucuyla/slashes/ (başsız bir web sitesi gibi) konuşuyor, ancak API'ler söz konusu olduğunda, her şeyi . Tıpkı sayfadan bir web sitesine normal bir kullanıcı olarak blog gönderdiğinizde olduğu gibi , kodunuz şu adreste veya benzeri bir yerde website.com/postAPI sunucusunun blog gönderme uç noktasıyla konuşabilir .api.website.com/postwebsite.com/api/post

Unsplash'ta Caspar Camille Rubin'in fotoğrafı

Şöyle düşünün: Dizüstü bilgisayarınızda veya telefonunuzda Gmail gelen kutunuzu kontrol ettiğinizde, tarayıcınız şunları yapar:

  1. İnternet üzerinden ulaşmak içingmail.com
  2. gmail.com"Web sayfasını altına alabilir miyim ? /mail/inbox"
  3. Ardından Gmail, gelen kutunuzun web sayfasını görebilmeniz için tarayıcınıza geri gönderir.
  1. uzanmakgmail.googleapis.com
  2. gmail.googleapis.comE-posta gelen kutunuzu isteyin
  3. Ardından, Gmail API tüm web sitesi yerine yalnızca verileri geri gönderir

Saf veriler kod dostudur ve API'ler bunun için yapılmıştır.

Örnek: openFDA API'sinden İlaç Alma

İşte USFDA'nın tüm FDA onaylı ilaçları listeleyen openFDA API'sini sorgulamak için kısa bir Python örneği:

# import an HTTP library
import requests

# Tell "requests" to request data from the openFDA "Drugs" endpoint
drugs_http_endpoint = "https://api.fda.gov/drug/label.json?limit=100"
drugs = requests.get(drugs_http_endpoint)

# Print all the data that we got from USFDA about drugs
print(drugs.json())

Not: Yukarıdaki örnek, Python için popüler requests HTTP kitaplığını kullanır .

Peki ya Bluetooth ve giyilebilir cihazlar için API'ler?

Giyilebilir bir cihazın API'sini (Fitbit veya Apple Watch gibi) kullanmak, bir web sitesinin API'sini kullanmaktan biraz farklıdır, ancak bunlar aynı şekilde belgelenmiştir. Örneğin, giyilebilir bir API'de "yorum" yöntemi yerine aşağıdaki yöntemler olabilir:

  • nabız al
  • hareket verilerini al (ivmeölçer ve jiroskoptan)
  • kullanıcıya bir uyarı gönder

Giyilebilir Örnek: Fitbit API

Veriler için bazı web sitelerini sorgulamak yerine, Fitbit gibi belirli bir cihaz için kodlama yapmak isteyebilirsiniz .

Fitbit'ler egzersizinizi, kalp atış hızınızı ve daha fazlasını izleyen giyilebilir cihazlardır. Fotoğraf: Shane, Unsplash'ta

Fitbit API'sinin birden çok parçası vardır . Hatta kendi Web API'sine sahiptir.

Fitbit API'nin birkaç parçası vardır: Device API, Settings API, Companion API ve Web API.

Device API'nin parçalarından birine bakalım .

Cihaz API sayfasında , sol kenar çubuğu etkileşimde bulunabileceğimiz tüm API parçalarının bir listesini gösterir.

Bu daha büyük kategorilerin her biri , parçaları hakkında daha fazla bilgi edinebileceğimiz ve ardından kendi kodumuzda kullanabileceğimiz bir tür LEGO parçaları koleksiyonudur . LEGO parçaları şöyle şeylerdir:

  • saati okumak veya ayarlamak
  • ivmeölçeri okuma (hareket izleyicinin bir parçası)
  • kalp atış hızı monitörünü okuma vb.

Çok fazla bilgi var, ancak sayfada kısa bir örnek komut dosyası var ve ardından kendi kodumuzda kullanabileceğimiz kalp atış hızıyla ilgili bir dizi LEGO parçası listeleniyor:

  • activated(kalp atış hızı sensörünün açık olup olmadığını bize söyler)
  • heartRate(bize mevcut kalp atış hızını söyler)
  • onactivate(kalp atış hızı sensörü etkinleştirilir etkinleştirilmez Fitbit'e ne yapması gerektiğini söylemek için kullanabileceğimiz bir işlev)

Sözde kodda, yukarıdaki şu anlama gelir:

import HeartRateSensor code from Fitbit's API

if HeartRateSensor was imported {
    hrm = the HeartRateSensor
    
    Listen for heart rate sensor to send data, then print it.

    Start the heart rate sensor (which will then start the above "Listen" code)
}

Bu çocuk API belgelerini nasıl okuyacağını biliyor. Fotoğraf: Kelly Sikkema, Unsplash'ta

Bir API kullanırken takılırsanız, onu yapan şirket genellikle Google'da bulabileceğiniz çevrimiçi belgelere sahip olacaktır. (Örnek: "Fitbit API" araması, gerçek Fitbit API'yi en üstteki arama sonucu olarak gösterir.) Bunu başaramazsanız, gönderebilecekleri API belgeleri olup olmadığını sormak için doğrudan şirketle iletişime geçebilirsiniz.

Bazı durumlarda, API dokümantasyonu gerçekten hayal kırıklığı yaratabilir ve geliştirici topluluğunda hüsrana yol açabilir. Ancak bu , katkıda bulunmak ve boşlukları doldurmak veya kendi, daha iyi ürününüzü yapmak için bir fırsattır .

Özet

Mühendisler, uygulamalarını, veri kümelerini ve giyilebilir ürünlerini geliştirmeniz ve kullanmanız umuduyla API'ler yazar. Artık API'leri anladığınıza göre, başlamak için bu popüler API'lere göz atın . Çoğu zaman, en sevdiğiniz teknoloji ve uygulamaların tümü, bir sonraki projenizde kullanabileceğiniz API'lere sahiptir.

Herhangi bir sorunuz veya geri bildiriminiz varsa, bize [email protected] adresinden e-posta gönderin veya Instagram'da (@protobioengineering) bize mesaj gönderin . Okuduğunuz için teşekkürler.

İlgili Bağlantılar

  • Biyologlar için GitHub
  • Dataverse API: Açık Kaynak Araştırma Verileri ve Yazılımı
  • Postacı: API'ler Oluşturun ve Test Edin
  • Unsplash'ta Phil Hearing'in fotoğrafı