İçeriğe geç

PHP İLE API OLUŞTURMA

Last updated on 16 Aralık 2020

77 / 100

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/

Sayfalar: 1 2 3

10 Yorum

  1. Mai Mai

    Eksiklerimi giderdiğim güzel bir içerik teşekkürler

  2. WebMaster WebMaster

    Oldukça orijinal ve kaliteli bir içerik olmuş tebrikler

  3. Görsel destekli olması şahane olmuş sonunda yapabildim

  4. emre emre

    github linki ölmüş sanırım yenileyebilirmisiniz?

    • En kısa sürede linki güncelliyor olacağım

  5. 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

    • Nasıl bir hata aldığınızı bizimle paylaşabilir misiniz?
      Postman uygulaması ile test edebilirsiniz.

    • 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

  6. serkan yalcin serkan yalcin

    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