PHP İLE API OLUŞTURMA

PHP İLE API OLUŞTURMA.
Bu örneğimizde kendi oluşturacağımız api ile veri tabanı ile iletişim kurarak ekleme, düzenleme, listeleme ve silme işlemlerini gerçekleştireceğiz.

Anasayfa (index.php)

Gelen istekleri yorumlayacağımız sayfadır. Bu sayfaya gelen GET ve POST isteklerine göre oluşturduğumuz Article sınıfındaki metotlara yönlendireceğiz. Bunu yapabilmemiz için ilk olarak Article sınıfımı dahil edelim ve bir nesne oluşturalım.

require_once('class.Article.php');
$ArticleAPI = new Article();
$url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; // Site URL

.htaccess düzenlemesi yaptıktan sonra her bir GET parametremizi / ile ayırıyorduk.

$_SERVER['REQUEST_URI']

.htaccess düzenlemesi yaptıktan sonra her bir GET parametremizi / ile ayırıyorduk.

Metodu ile tüm url adresimizi çekelim ve bu adresimizi explode fonksiyonu ile “/” karakterine göre parçalayalım.

$uri = explode("/", $_SERVER['REQUEST_URI']);

Artık tüm urli “/” karakterine göre parçaladık. Artık hangi metot için hangi url geleceğine karar verebiliriz.

Tümünü Listele

Parçaladığımız url adresinin son parçası list değerine eşit ise ArticleAPI sınıfına git ve getAll metodunu çağır diyoruz.

if ($uri[count($uri) - 1] == "list") {
	echo $ArticleAPI->getAll();
}

Tek Yazı Gösterme (ID)

Parçaladığımız url adresinin sondan bir önceki parçası id değerine eşit ve son parçası bir sayıya eşit ise ArticleAPI sınıfına git ve getId metodunu çağır diyoruz.

if ($uri[count($uri) - 2] == "id") {
	$id = $uri[count($uri) - 1];
	echo $ArticleAPI->getId($id);
}

Yazı Gösterme (SLAG – SEO Tip)

Parçaladığımız url adresinin sondan bir önceki parçası slag değerine eşit ve son parçası bir metine eşit ise ArticleAPI sınıfına git ve getSlag metodunu çağır diyoruz.

if ($uri[count($uri) - 2] == "slag") {
	$slag = $uri[count($uri) - 1];
	echo $ArticleAPI->getSlag($slag);
}

Yazı Silme

Parçaladığımız url adresinin sondan bir önceki parçası delete değerine eşit ve son parçası bir id değerine eşit ise ArticleAPI sınıfına git ve deleteArticle metodunu çağır diyoruz.

if ($uri[count($uri) - 2] == "delete") {
	$id = $uri[count($uri) - 1];
	echo $ArticleAPI->deleteArticle($id);
}

Yazı Ekleme (POST)

API’ye gönderilen post değeri setArticle değerine eşitse Post edilen başlık ve metin değerlerini al. ArticleAPI sınıfına git ve setArticle metodunu çağır diyoruz.

if (isset($_POST['setArticle'])) {
	$title 	 = (!empty($_POST['title']) ? $_POST['title'] : "");
	$article = (!empty($_POST['text']) ? $_POST['text'] : "");
	echo $ArticleAPI->setArticle($title, $article);
}

Yazı Düzenleme (POST)

API’ye gönderilen post değeri editArticledeğerine eşitse Post edilen id, başlık ve metin değerlerini al. ArticleAPI sınıfına git ve editArticle metodunu çağır diyoruz.

if (isset($_POST['editArticle'])) {
	$id 	 = (!empty($_POST['id']) ? $_POST['id'] : "");
	$title 	 = (!empty($_POST['title']) ? $_POST['title'] : "");
	$article = (!empty($_POST['text']) ? $_POST['text'] : "");
	echo $ArticleAPI->editArticle($id, $title, $article);
}

GET ve POST İsteği Yoksa

Apimize gelen hiç get ve post istekleri yoksa oluşturduğumuz api kullanım sayfasını gösteriyoruz.

<?php
if (empty($_GET) && empty($_POST)) { ?>
	<!doctype html>
	<html lang="en">

	<head>
		<!-- Required meta tags -->
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

		<!-- Bootstrap CSS -->
		<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">

		<title>Article API</title>
	</head>

	<body>
		<div class="container mt-3">
			<h3 class="text-center">Article API</h3>
			<div class="card">
				<div class="card-body">			
				<h5 class="card-title">GET Params</h5>
				<hr>
				<strong>All List : </strong> <a href="<?= $url?>list"><?=$url?>list</a>
				<hr>
				<strong>GET ID : </strong> <a href="<?= $url?>id/1"><?=$url?>id/${id}</a>
				<hr>
				<strong>GET SLAG : </strong> <a href="<?= $url?>slag/demo"><?=$url?>slag/${slag}</a>
				<hr>
				<strong>DELETE : </strong> <a href="<?= $url?>delete/1"><?=$url?>delete/${id}</a>
				<hr>
				
				<h5 class="card-title">POST Params</h5>
				<hr>
				<strong>CREATE</strong> <br>
				
				<pre><strong>setArticle</strong> = setArticle</pre>
				<pre><strong>title</strong> = Your Title</pre>
				<pre><strong>text</strong> = Your Text</pre>
				<br>
				<hr>
				<strong>CREATE POST URL: </strong><?= $url?>index.php
				<br>
				<hr>
				<strong>EDIT</strong> <br>
				
				<pre><strong>editArticle</strong> = editArticle</pre>
				<pre><strong>id</strong> = Data ID</pre>
				<pre><strong>title</strong> = Your Title</pre>
				<pre><strong>text</strong> = Your Text</pre>
				<br>
				<hr>
				<strong>EDIT POST URL: </strong><?= $url?>index.php




					
				</div>
			</div>
		</div>

		<!-- Optional JavaScript -->
		<!-- jQuery first, then Popper.js, then Bootstrap JS -->
		<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
		<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
		<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script>
	</body>
	</html>
<?php } ?>

Tüm Kodlar Anasayfa (index.php)

<?php
require_once('class.Article.php');
$ArticleAPI = new Article();
$url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];


$uri = explode("/", $_SERVER['REQUEST_URI']);

if ($uri[count($uri) - 1] == "list") {
	echo $ArticleAPI->getAll();
}

if ($uri[count($uri) - 2] == "id") {
	$id = $uri[count($uri) - 1];
	echo $ArticleAPI->getId($id);
}

if ($uri[count($uri) - 2] == "slag") {
	$slag = $uri[count($uri) - 1];
	echo $ArticleAPI->getSlag($slag);
}

if ($uri[count($uri) - 2] == "delete") {
	$id = $uri[count($uri) - 1];
	echo $ArticleAPI->deleteArticle($id);
}

if (isset($_POST['setArticle'])) {
	$title 	 = (!empty($_POST['title']) ? $_POST['title'] : "");
	$article = (!empty($_POST['text']) ? $_POST['text'] : "");
	echo $ArticleAPI->setArticle($title, $article);
}

if (isset($_POST['editArticle'])) {
	$id 	 = (!empty($_POST['id']) ? $_POST['id'] : "");
	$title 	 = (!empty($_POST['title']) ? $_POST['title'] : "");
	$article = (!empty($_POST['text']) ? $_POST['text'] : "");
	echo $ArticleAPI->editArticle($id, $title, $article);
}

?>



<?php
if (empty($_GET) && empty($_POST)) { ?>
	<!doctype html>
	<html lang="en">

	<head>
		<!-- Required meta tags -->
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

		<!-- Bootstrap CSS -->
		<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">

		<title>Article API</title>
	</head>

	<body>
		<div class="container mt-3">
			<h3 class="text-center">Article API</h3>
			<div class="card">
				<div class="card-body">			
				<h5 class="card-title">GET Params</h5>
				<hr>
				<strong>All List : </strong> <a href="<?= $url?>list"><?=$url?>list</a>
				<hr>
				<strong>GET ID : </strong> <a href="<?= $url?>id/1"><?=$url?>id/${id}</a>
				<hr>
				<strong>GET SLAG : </strong> <a href="<?= $url?>slag/demo"><?=$url?>slag/${slag}</a>
				<hr>
				<strong>DELETE : </strong> <a href="<?= $url?>delete/1"><?=$url?>delete/${id}</a>
				<hr>
				
				<h5 class="card-title">POST Params</h5>
				<hr>
				<strong>CREATE</strong> <br>
				
				<pre><strong>setArticle</strong> = setArticle</pre>
				<pre><strong>title</strong> = Your Title</pre>
				<pre><strong>text</strong> = Your Text</pre>
				<br>
				<hr>
				<strong>CREATE POST URL: </strong><?= $url?>index.php
				<br>
				<hr>
				<strong>EDIT</strong> <br>
				
				<pre><strong>editArticle</strong> = editArticle</pre>
				<pre><strong>id</strong> = Data ID</pre>
				<pre><strong>title</strong> = Your Title</pre>
				<pre><strong>text</strong> = Your Text</pre>
				<br>
				<hr>
				<strong>EDIT POST URL: </strong><?= $url?>index.php




					
				</div>
			</div>
		</div>

		<!-- Optional JavaScript -->
		<!-- jQuery first, then Popper.js, then Bootstrap JS -->
		<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
		<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
		<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script>
	</body>

	</html>


<?php } ?>

Api Link

Apiye ulaşmak için tıklayınız.


Örneğimizin Github Linki

API Orneği Github Linki Tıkla ve Ziyaret Et.


Api Örneğimi incelediğiniz için teşekkür ederim. Sağlıklı günler dilerim.

Bloğumu halen incelemediniz mi ? https://enginyenice.com/

Hakkımda: https://enginyenice.com/hakkimda/

İletişim: https://enginyenice.com/iletişim/

“PHP İLE API OLUŞTURMA” için 10 yorum

  1. Merhaba, güzel paylaşım elinize sağlık, edit ve post nasıl yapacağım deniyorum ama hiçbir işlem yapmıyor. Teşekkürler

    1. Edit metodu POST işlemi ile çalışmaktadır. Siz burada GET işlemi yapmaya çalışmışsınız. POST işlemini test etmek için POSTMAN kullanabilirsiniz.
      POSTMAN uygulaması üzerinden POST işlemi örneğinin resim Linki: https://prnt.sc/zj5psm

  2. Selamlar, form ile veri eklemek için setArticle fonksiyonunu nasıl kullanacağız?
    örnek verir misiniz?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir