PHP ile API Oluşturma

PHP İLE API OLUŞTURMA

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/

Yayımlayan

3 Replies to “PHP İLE API OLUŞTURMA

Bir cevap yazın

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