API'ye bağlanmak dediğiniz şey endpoint denilen api uç noktalarına HTTP isteği göndermektir.
API authentication ise, yani sizin login olmak dediğiniz, private API'lerde her istekte diğer parametrelerle göndermeniz gereken token değerini elde etmektir. API'lerde session kullanılmadığı için stateless auth denilen bu yöntem yaygın kullanılıyor.
Önce kullanıcı adı ve şifre ile API'nin giriş uç noktasına istek gönderiyorsunuz. Kullanıcı onaylanırsa size karşılığında token veriyor. Sonra her istekte bu tokenı da gönderiyorsunuz. Bu her seferinde kullanıcı adı şifre kullanmadan sistemi yetkili olarak kullanmanızı sağlıyor.
Bu token ise API'lerde genellikle Bearer diye geçer, sistem ise bazen Bearer Token Authentication diye geçer. (Laravel Passport'un yaptığı iş bu token'ın elde edilmesi ve kullanılmasıdır.)
// Örnek uç nokta:
example.com/api/users // tüm kullanıcıları dönderir
example.com/api/users?id=1 // id'si 1 olan kullanıcının bilgilerini dönderir
example.com/api/users?active=1&group=customers // customers grubuna dahil olan aktif kullanıcıları dönderir
Bu adrese istek gönderdiğinizde (tarayıcı ya da cURL ile, kullanım şekline göre değişir) atıyorum size tüm kullanıcıları JSON, XML gibi veri formatında geri verir.
Javascript tekrar popüler olduğundan beri en çok JSON kullanılıyor. Siz PHP kullanıyorsanız en basitinden veriyi json_decode yaparak array haline getirirsiniz ya da nasıl
ihtiyacınızı görüyorsa o formata dönüştürürsünüz.
Bu HTTP istekleri için en popüler paketlerden biri Guzzle:
https://github.com/guzzle/guzzle
Laravel'in API Auth için kendi resmi paketi Passport:
https://laravel.com/docs/5.7/passport
Dökümanda da belirtildiği gibi öncelikle OAuth2 nedir nasıl çalışır bununla ilgili bir araştırma yapın. Nasıl çalıştığını öğrenirseniz paket bu sistemi kendi sisteminize kurmanızı kolaylaştıracaktır.
Öteki türlü kafanız sorularla dolacaktır.
Daha önce de örnek gösterdiğim API uç noktaları vb oluşturulması, cURL isteklerinin yapılması için DigitalOCean'ın API dökümanlarına bakabilirsiniz:
https://developers.digitalocean.com/documentation/v2/
Örneğin:
curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer b7d03a6947b217efb6f3ec3bd3504582" "https://api.digitalocean.com/v2/account"
Burada uç nokta:
https://api.digitalocean.com/v2/account
Auth Token
b7d03a6947b217efb6f3ec3bd3504582:
Yapılan HTTP isteği türü
GET
Gönderilen parametre
Yok ama Content-Type: application/json headerı ile içerik tipi gönderilmiş
Dönen yanıt JSON
{
"account": {
"droplet_limit": 25,
"floating_ip_limit": 5,
"email": "sammy@digitalocean.com",
"uuid": "b6fr89dbf6d9156cace5f3c78dc9851d957381ef",
"email_verified": true,
"status": "active",
"status_message": ""
}
}