آموزش ساخت و نحوهٔ کاربرد REST API در PHP

ساخت وبلاگ

در این آموزش از سایت وبنولوژی می‌خواهیم به شما طریقه ایجاد یک API در PHP از نوع REST را آموزش دهیم. به زبانی ساده و به همراه یک ویدیوی جذاب و به زبان فارسی! که در کمتر جایی خواهید یافت. REST API به شما امکان استفاده از سرویس‌های اینترنتی را توسط یک برنامهٔ دیگر می‌دهد. به عبارتی دیگر برای ایجاد ارتباط بین برنامه‌های مختلف روی رایانه‌های مختلف که به شبکه متصل هستند، می‌توان از REST API استفاده نمود.

آموزش <strong>ساخت</strong> و <strong>نحوهٔ</strong> <strong>کاربرد</strong> REST API در PHP
آموزش ساخت و نحوهٔ کاربرد REST API در PHP

REST چیست؟

این عبارت سرنام Representational State Transfer می‌باشد. REST ساختاری است که مجموعه‌ای از قوانین را برای توسعه و استفاده از وب سرویس‌ها بر بستر HTTP تعریف می‌کند. REST API هم ساده است و به سادگی اجرا می‌گردد، هم اینکه بدون وابستگی به سکویی قابلیت اجرایی با هر زبان برنامه نویسی را دارد.

نوعی دیگر از وب سرویس SOAP نام دارد که سرنام عبارت Simple Object Access Protocol است و توسط مایکروسافت توسعه داده شده.

REST API چطور کار می‌کند؟

درخواست‌های REST مرتبط با عملیات چهارگانهٔ CRUD یعنی Create, Read, Update, Delete در پایگاه داده است. REST از درخواست‌های GET, POST, PUT و DELETE بهره می‌گیرد.

  • GET برای دریافت اطلاعات که مشابه Readاست.
  • POST برای ایجاد رکورد جدید که مشابه Create است.
  • PUT برای به روزرسانی رکورد که شبیه Update است.
  • DELETE برای حذف رکورد که شبیه Delete است.

طریقه ساخت REST API در PHP

خروجی اصلی REST API به سبک JSON است و ما هم از همین فرمت برای ایجاد ارتباط با API مان استفاده می‌کنیم. کل این آموزش به دو مرحله تقسیم می‌گردد:

  1. ایجاد REST API برای ارسال اطلاعات (سرویس دهنده)
  2. استفاده از REST API برای دریافت اطلاعات (سرویس گیرنده)

راه اندازی REST API

در این مرحله کارهایی که صورت می‌پذیرد شامل موارد زیر می‌باشد:

  1. ساخت پایگاه داده MySQL و جدول درون آن
  2. ایجاد اتصال به پایگاه داده با PHP
  3. ساخت سند REST API با PHP

پایگاه داده را هم می‌توان از طریق phpMyAdmin از کنترل پنل ایجاد کرد. هم با یک دستور SQL ساده بدین ترتیب:

CREATE DATABASE phpapi;

یک جدول هم باید درون این پایگاه داده ایجاد کرد که دستورات SQL زیر چاره نیاز ماست:

CREATE TABLE IF NOT EXISTS `transactions` ( 
`id` int(20) NOT NULL AUTO_INCREMENT,
`order_id` int(50) NOT NULL,
`amount` decimal(9,2) NOT NULL,
`response_code` int(10) NOT NULL,
`response_desc` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `order_id` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

حالا باید ایجاد ارتباط با دیتابیس را ایجاد کنیم. روی هاست یک سند با نام db.php می‌سازیم. کدهای زیر را درون آن قرار می‌دهیم. اطلاعات اتصال به دیتابیس را با موارد حقیقی آنها جایگزین کنید.

<?php 
// Enter your Host, username, password, database below.
$con = mysqli_connect("localhost","db_username","db_password","phpapi");
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
die();
}
?>

یک سند دیگر هم با نام api.php ایجاد می‌کنیم که برای ایجاد ارتباط با دیتابیس به کار می‌رود. کدهای زیر را درون آن قرار می‌دهیم.

<?php 
header("Content-Type:application/json");
if (isset($_GET['order_id']) && $_GET['order_id']!="") {
include('db.php');
$order_id = $_GET['order_id'];
$result = mysqli_query(
$con,
"SELECT * FROM `transactions` WHERE order_id=$order_id");
if(mysqli_num_rows($result)>0){
$row = mysqli_fetch_array($result);
$amount = $row['amount'];
$response_code = $row['response_code'];
$response_desc = $row['response_desc'];
response($order_id, $amount, $response_code,$response_desc);
mysqli_close($con);
}else{
response(NULL, NULL, 200,"No Record Found");
}
}else{
response(NULL, NULL, 400,"Invalid Request");
}

function response($order_id,$amount,$response_code,$response_desc){
$response['order_id'] = $order_id;
$response['amount'] = $amount;
$response['response_code'] = $response_code;
$response['response_desc'] = $response_desc;
$json_response = json_encode($response);
echo $json_response;
}
?>

این سند درخواست‌ها را به صورت GET می‌گیرد و نتیجه با فرمت JSON بر می‌گرداند. ما همهٔ این اسناد را در پوشه ای با نام rest ایجاد کردیم. پس ساختار URL درخواست از API به این صورت خواهد بود:

http://localhost/rest/api.php?order_id=15478959

اگر یک چنین id ای در دیتابیس وجود داشته باشد، نتیجه زیر بر خواهد گشت.

نتیجه دریافت اطلاعات با REST API
نتیجه دریافت اطلاعات با REST API

اما URL ای که در بالا استفاده شد چندان کاربرپسند نیست. پس بهتر است که با کد .htaccess آن را اصلاح کنیم. این دو خط را در سند .htaccess در پوشه rest می‌گذاریم. اگر یک چنین سندی نیست آن را ایجاد کنید.

RewriteEngine On # Turn on the rewriting engine 
RewriteRule ^api/([0-9a-zA-Z_-]*)$ api.php?order_id=$1 [NC,L]

حالا همان نشانی بالا با ساختار زیر هم قابل دسترس است.

http://localhost/rest/api/15478959

تا اینجای کار ما REST API را ایجاد کردیم. حالا در ادامهٔ کار می‌خواهیم یک برنامهٔ دیگر بسازیم که با این API ارتباط برقرار نماید.

استفاده از REST API

کارهایی که در این مرحله انجام می‌پذیرد شامل:

  1. ساخت یک سند Index با فرم HTML
  2. دریافت رکوردها بواسطهٔ CURL

پس ما در اینجا یک پوشهٔ دیگر می‌سازیم. حالا این پوشه می‌تواند روی یک هاست دیگر باشد. یک سند index.htm ساخته و محتوای زیر را درون آن قرار می‌دهیم.

<form action="fetch.php" method="POST"> 
<label>Enter Order ID:</label><br />
<input type="text" name="order_id" placeholder="Enter Order ID" required/>
<br /><br />
<button type="submit" name="submit">Submit</button>
</form>

یک سند دیگر هم ساخته که کار پردازش اطلاعات فرم را به عهده دارد و نام آن را fetch.php می گذارد و خطوط زیر را درون آن قرار می‌دهیم.

<?php 
if (isset($_POST['order_id']) && $_POST['order_id']!="") {
$order_id = $_POST['order_id'];
$url = "http://localhost/rest/api/".$order_id;

$client = curl_init($url);
curl_setopt($client,CURLOPT_RETURNTRANSFER,true);
$response = curl_exec($client);

$result = json_decode($response);

echo "<table>";
echo "<tr><td>Order ID:</td><td>$result->order_id</td></tr>";
echo "<tr><td>Amount:</td><td>$result->amount</td></tr>";
echo "<tr><td>Response Code:</td><td>$result->response_code</td></tr>";
echo "<tr><td>Response Desc:</td><td>$result->response_desc</td></tr>";
echo "</table>";
}
?>

اگر با مرورگر به نشانی فرم اینترنتی رفته و یک order_id وارد کنید که همان رکورد در پایگاه داده وجود داشته باشد، یک نتیجهٔ پر به شما برگردانده خواهد شد. اما اگر چنین رکوردی در دیتابیس موجود نباشد، هیچ چیزی برگردانده نخواهد شد.

جمع بندی

این از روال ساخت REST API در PHP بود. توضیحات بیشتر را در ویدیویی که در همین صفحه خدمت شما تقدیم کردیم گفته شده. با دیدن این فیلم به راحتی می‌توانید از همهٔ جوانب کار این کدهای سر در بیاورید. امیدوارم که این آموزش برنامه نویسی هم برای شما جذاب بوده باشد.

وبنولوژی...
ما را در سایت وبنولوژی دنبال می کنید

برچسب : نویسنده : webnol بازدید : 3511 تاريخ : چهارشنبه 11 ارديبهشت 1398 ساعت: 21:55