REST API İstemcileri

Ali Orhun Akkirman
4 min readJul 10, 2022

--

API, “Application Programming Interface” kısaltmışı olarak kullanılan, özetle bir uygulamanın farklı yöntemlerle (arayüz), belirlenen yetenekler ve belirli kısıtlara uygun olarak çağrılabilmesini sağlayan bir tanımdır.

Çok detayına girmeyecek olsam da API sadece “REST API” yani HTTP sorguları şeklinde olmak zorunda değildir. İşletim sistemleri içerisinde, kütüphane ve çatılarda ve farklı protokoller yardımı ile kullanılabilmektedir.

REST API ise “Representational State Transfer” yani sunucu ve istemci arasında HTTP istekleri ile veri alışverişi sağlanabilmesi için kullanılmaktadır. HTTP istekleri genel olarak GET, POST, DELETE ve PUT gibi komutlar kullanılmakla birlikte genellikle GET ve POST’un aktif olarak kullanıldığını söyleyebiliriz.

Bazı özel HTTP durum kodları aşağıdaki gibidir.

  • HTTP 200 : Olumlu dönüş
  • HTTP 201 : Veri oluşturuldu
  • HTTP 400 : Kötü istek
  • HTTP 401 : Giriş gerekli
  • HTTP 403 : Yetkisiz
  • HTTP 404 : Adres bulunamadı

Ücretsiz API örnekleri

İnternet üzerinde çeşitli sayfalarda ücretsiz API’lerin olduğu görülmektedir. Ve bu API’lerin kullanılması bu kavramların öğrenilmesi için oldukça verimli olmaktadır. Ücretsiz API kaynakları için aşağıdaki web sayfası kullanılabilir:

Bu çalışmamızda tamamen giriş seviyesinde komut satırı, arayüz, PHP, GOlang ve Python dilleri ile basit örnekler yapacağız. Örnek olarak rastgele köpek resmi çıktısı veren bir API ucu (endpointi) kullanacağım. Bu adımda POST üzerinde bir örnek yapmayıp sadece GET işlemi yapacağız. Ve izin gerektiren bir uç olmadığını varsayıyoruz.

https://dog.ceo/api/breeds/image/random

1. Komut (CLI) Uygulaması

1.1. cURL

Komut satırı üzerinde bir REST API sorgusunun yapılabilmesi için en çok kullanılan uygulamanın cURL olduğunu söylesek sanırım kimse inkar etmeyecektir.

GET kullanımı için herhangi bir parametre girmeden cURL’ü çalıştırabiliyoruz.

2. Arayüz Uygulaması

2.1. Postman

Postman arayüz üzerinden REST API sorgusu atabilmek için en çok kullanılan uygulama olduğunu söyleyebiliriz. Fakat birazdan anlatacağım rakiplerine göre biraz yavaş olduğunu söyleyebilirim. Yine de özellikle “çalışma alanı” ve “kolleksiyon” oluşturma konusunda oldukça verimli bir ortam oluşturduğunu söyleyebilirim.

2.2. Insomnia

Insomnia, özellikle Postman alternatifi olarak daha hızlı bir ortam sunan, daha basit ve “kolleksiyon” mantığı bulunan güzel bir istemci uygulaması. Postman’dan hızlı ve basit olması kişisel olarak tercih etmemi sağlamaktadır.

2.3. VSCode Thunder Client

VSCode üzerinde eklenti olarak eklenen ve basit kullanım sağlayan bu eklentiyi de kullanmaktayım. Fakat özellikle “kolleksiyon” özelliği diğer iki uygulama kadar gelişkin ve farklı VSCode’larla henüz sync olamamaktadır. Bu nedenle her çalışma bilgisayarında bunlara erişim bildiğim kadarıyla mümkün olmamakta. Bu nedenle basit işlemler için kullanılması önerilir.

3. PHP REST API Kullanımı

3.1. cURL kullanımı

PHP dili ile cURL kütüphanesi kullanarak basit bir GET sorgusu aşağıdaki gibi atılabilmektedir.

<?php$url = “https://dog.ceo/api/breeds/image/random";$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//debug için!
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);
?>

3.2. Guzzle kullanımı

PHP dili ile cURL dışında daha gelişmiş bir kütüphane de bulunmaktadır. Guzzle üzerinde sorgu atabilmek için aşağıdaki gibi bir kullanım yapabilirsiniz.

$client = new GuzzleHttp\Client();
$res = $client->get('https://dog.ceo/api/breeds/image/random');
echo $res->getStatusCode(); // 200
echo $res->getHeader('content-type'); // 'application/json; charset=utf8'
echo $res->getBody();
var_export($res->json()); // Outputs the JSON decoded data

Guzzle için daha fazla bilgi için aşağıdaki belgelendirmeyi de okuyabilirsiniz:

4. GOlang REST API Kullanımı

4.1. GOResty

GOlang dili ile bir çok kütüphane bulunmasına karşın bir tanesi üzerinde bir örnek yapmak istedim.

import "github.com/go-resty/resty/v2"// Create a Resty Client
client := resty.New()

resp, err := client.R().
EnableTrace().
Get("https://dog.ceo/api/breeds/image/random")

// Explore response object
fmt.Println("Response Info:")
fmt.Println(" Error :", err)
fmt.Println(" Status Code:", resp.StatusCode())
fmt.Println(" Status :", resp.Status())
fmt.Println(" Proto :", resp.Proto())
fmt.Println(" Time :", resp.Time())
fmt.Println(" Received At:", resp.ReceivedAt())
fmt.Println(" Body :\n", resp)
fmt.Println()

Go-resty hakkında daha fazla bilgi için aşağıdaki belgelendirmeyi de okuyabilirsiniz:

5. Python REST API kullanımı

5.1. Requests

Python dili ile bir çok kütüphane bulunmasına karşın bir tanesi üzerinde bir örnek yapmak istedim.

import requestsresponse = requests.get("https://dog.ceo/api/breeds/image/random")print(response.json())

--

--

Ali Orhun Akkirman
Ali Orhun Akkirman

Written by Ali Orhun Akkirman

Sistem Yönetim Yazılım Geliştirme Takım Lideri @HAVELSAN

No responses yet