PHP'de REST API
Hem API geliştiricileri hem de kullanıcıları için genel kolaylık sağlamak amacıyla API'yi standartlaştıran özel yaklaşımlar bulunmaktadır.
Bu yaklaşımlardan biri de REST API'dir. Temelinde, CRUD işlemleri için HTTP protokolünün çeşitli yöntemlerini kullanma fikri yatar.
Veri almak için - GET yöntemi, veri oluşturmak için - POST yöntemi, veri değiştirmek için - PUT yöntemi, veri silmek için - DELETE yöntemi.
Örnek olarak, kullanıcılar üzerinde işlem yapan bir API'yi ele alalım. Çeşitli işlemler için URL'lerin nasıl görüneceğine bir göz atalım.
Tüm kullanıcıları alıyoruz:
GET http://api.loc/users/
Kullanıcıyı id'sine göre alıyoruz:
GET http://api.loc/user/1/
Kullanıcı oluşturuyoruz:
POST http://api.loc/user/
Kullanıcıyı id'sine göre değiştiriyoruz:
PUT http://api.loc/user/1/
Kullanıcıyı id'sine göre siliyoruz:
DELETE http://api.loc/user/1/
Şimdi, REST API'nin PHP'de nasıl uygulandığına bir göz atalım. Burada biraz sorun var. Gerçek şu ki, hem PHP hem de CURL sadece GET ve POST yöntemlerini destekliyor:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // sadece GET ve POST
?>
Bu nedenle, REST API'yi uygulamak için
bir hile yapmak gerekecek. Bunun özü,
gerçekte verilerin sadece GET ve POST
yöntemleriyle iletilecek olmasıdır, ancak
biz özel bir HTTP başlığı kullanarak diğer
yöntemlerin çalışmasını taklit edeceğiz.
Örneğin, onu HTTP-X-HTTP-METHOD olarak adlandıralım.
O zaman bu başlığın içeriğini aşağıdaki şekilde alabileceğiz:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Şimdi API uygulamasını yazabiliriz:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
switch ($method) {
case 'GET':
// ...
break;
case 'POST':
// ...
break;
case 'PUT':
// ...
break;
case 'DELETE':
// ...
break;
}
?>
Bir e-ticaret sitesinin ürünleri için bir REST API uygulayın.
Uygulanan API'nin çalışmasını CURL kütüphanesi ile test edin.