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

این عبارت سرنام Representational State Transfer میباشد. REST ساختاری است که مجموعهای از قوانین را برای توسعه و استفاده از وب سرویسها بر بستر HTTP تعریف میکند. REST API هم ساده است و به سادگی اجرا میگردد، هم اینکه بدون وابستگی به سکویی قابلیت اجرایی با هر زبان برنامه نویسی را دارد.
نوعی دیگر از وب سرویس SOAP نام دارد که سرنام عبارت Simple Object Access Protocol است و توسط مایکروسافت توسعه داده شده.
درخواستهای REST مرتبط با عملیات چهارگانهٔ CRUD یعنی Create, Read, Update, Delete در پایگاه داده است. REST از درخواستهای GET, POST, PUT و DELETE بهره میگیرد.
خروجی اصلی REST API به سبک JSON است و ما هم از همین فرمت برای ایجاد ارتباط با API مان استفاده میکنیم. کل این آموزش به دو مرحله تقسیم میگردد:
در این مرحله کارهایی که صورت میپذیرد شامل موارد زیر میباشد:
پایگاه داده را هم میتوان از طریق 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=IoDB DEFAULT CHARSET=utf8 ;
حالا باید ایجاد ارتباط با دیتابیس را ایجاد کنیم. روی هاست یک سند با نام db.php میسازیم. کدهای زیر را درون آن قرار میدهیم. اطلاعات اتصال به دیتابیس را با موارد حقیقی آنها جایگزین کنید.
<?php
// Enter your Host, username, password, database below.
$con = mysqli_coect("localhost","db_username","db_password","phpapi");
if (mysqli_coect_errno()){
echo "Failed to coect to MySQL: " . mysqli_coect_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 ای در دیتابیس وجود داشته باشد، نتیجه زیر بر خواهد گشت.

اما 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 ارتباط برقرار نماید.
کارهایی که در این مرحله انجام میپذیرد شامل:
پس ما در اینجا یک پوشهٔ دیگر میسازیم. حالا این پوشه میتواند روی یک هاست دیگر باشد. یک سند 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 بود. توضیحات بیشتر را در ویدیویی که در همین صفحه خدمت شما تقدیم کردیم گفته شده. با دیدن این فیلم به راحتی میتوانید از همهٔ جوانب کار این کدهای سر در بیاورید. امیدوارم که این آموزش برنامه نویسی هم برای شما جذاب بوده باشد.
برچسب:
نویسنده: هستی سلطانی