با بخش پنجم (آخر) از اصول وب سرویس RESTful با شما همراه هستیم .در مقالات قبلی تمام آموزش های مورد نیاز برای ساخت وب سرویس restful بر اساس معماری و قوانین REST را دیدیم (وب سرویس REST چیست).
در این بخش قصد داریم به شما استفاده نوع داده json , نامگذاری و .. به عنوان یکی از اصول پیشنهادی در طراحی API های RESTful اشاره کنیم.
استفاده از JSON در پاسخ های وب سرویس RESTful
در بسیاری از مطالب آموزشی در مورد طراحی API ها گفته می شود که پاسخ ها را در دو فرمت JSON و XML برای کلاینت ها محیا کنید تا کلاینت از هرکدام که خواست استفاده نماید. اما در اینجا می گوییم شاید وقت آن باشد که دیگر فرمت XML را بعنوان پاسخ رها کنیم و
تنها از JSON استفاده کنیم.
اگرچه فرمت XML کاربرد های بسیاری دارد و مزایای زیادی هم در بسیاری از برنامه ها دارد اما در اینجا باید گفت این فرمت برای پاسخ یک API بسیار طولانی است، پارس کردن ان نیز دشوار است،
به آسانی نمی توان آن را خواند و علاوه بر اینها با مدل های داده ای مرسوم در زبان های برنامه نویسی نیز سازگاری زیادی ندارد. بنابه این دلایل و بسیاری از دلایل دیگر، برنامه های متعدد از جمله YouTube، Twitter و … در حال کنار گذاشتن XML هستند. یکی از دلیل این ادعا هم میتواند اختلاف گرایش به سمت این دو
در Google Trend باشد.
نامگذاری پارامتر ها بر اساس snake_case و یا camelCase
اگر شما از JSON برای پاسخ استفاده می کنید، بدلیل آنکه قاعده نامگذاری در JavaScript بر اساس camelCase است، درست آن است شما نیز برای نامگذاری پارامتر ها از camelCase استفاده نمایید.
اما وقتی قرار است در سمت کلاینت کتابخانه هایی با زبان های مختلف داشته باشید بهتر است مبنای کار شما قواعد نامگذاری در آن زبان ها باشد. بعنوان مثال اگر از جاوا استفاده می کنید بهتر از نام های شما camelCase و در صورتی که از زبان هایی مانند python و یا
ruby بهره می گیرد پیشنهاد می شود ازsnake_case استفاده نمایید.
فراهم نمودن خروجی زیبا و پشتیبانی از فشرده سازی gzip
همانطور که در بخش های مختلف بیان کردیم API شما باید از طریق مرورگر قابل دسترس باشد. این بدین معناست که خروجی APIدر مرورگر قابل مشاهده خواهد بود. بنابراین بهتر است خروجی چاپ شده در مرورگر به راحتی قابل خواندن باشد.
گاهی اوقات به منظور صرفه جویی در پهنای باند و ترافیک شبکه از فشرده سازی white-space compression استفاده می شود که این مسئله باعث می شود خروجی API در مرورگر چندان زیبا و خوانا نباشد. البته برخی ها با استفاده از پارامتر هایی مانند ?prety=true
این امکان را برای کاربران فراهم می آورند تا امکان مشاهده خروجی زیبا (pretty print) را داشته باشند اما پیشنهاد می شود بطور پیشفرض این قابلیت را در API های خود فعال نمایید چراکه می توانید اختلاف هزینه انتقال داده را با پشتیبانی از فشرده سازی gzipجبران
نمایید و در عین حال API شما از نظر در دسترس بودن و خوانا بودن وضعیت بهتری را خواهد داشت.
خب تقریبا تمام اصول مورد نیاز برای طراحی API استاندارد و کارا بر اساس معماری REST نیاز بود را کامل در این سری مقالات به شما نشان دادیم .
امیدوارم با به کارگیری این اصول وب سرویس RESTful در طراحی های API بتوانید میزان توسعه پذیری , خوانایی و استفاده آسان از آن را تا حد زیادی افزایش بدید و به اصول استاندارد آن برسید .
موفق پیروز باشید.
خیلی از سخاوت شما شرمنده شدم
واقعا صنعت ما به افرادی مانند حضرتعالی نیازمنده
خواهش می کنم. خوشحالیم که مفید واقع شده.
موفق باشید.
سلام و ممنون از زحمات جنابعالی
راهنمایی بفرمایید
$id_code = $vars[‘کلید ارسالی ما’];
$action = $_REQUEST[‘action’];
global $CONFIG;
$curl = curl_init( );
curl_setopt( $curl, CURLOPT_URL, ‘https://siteyou/api.php’ );
curl_setopt( $curl, CURLOPT_HTTPHEADER, array( ‘Content-Type’ => ‘application/json’ ) );
// curl_setopt( $curl, CURLOPT_POSTFIELDS,postvar1 = postvar1 & postvar2 = value2 & postvar3 = value3 );//بر اساس پیشفرض در خط بعد ارسال میشود
curl_setopt( $curl, CURLOPT_POSTFIELDS, ‘myname=’ . $id_code . ‘&secret_key=TH_tnt&domain=’ . $_SERVER[‘SERVER_NAME’] );
curl_setopt( $curl, CURLOPT_TIMEOUT, 400 );
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
$result = json_decode( curl_exec( $curl ) );
curl_close( $curl );
if ($result->status == 100) {//اگر شرط درست باشه اجرای بقیه فرایند
else{// در غیر اینصورت با خطای
echo “مشکلی رخ دادکد خطا : ” . $result->status . “”;
}
//https://siteyou/api.php کد های این فایل چطور نوشته بشه ؟
بفرمایید
$code = $_POST['code'];
if($code == 'somthing') $result = 100;
else $result = 0;
echo json_encode(['result' => $result]);
ممنون از پاسخ شما
با توجه به متغیر
$order_id
و کلید ما توش ذخیره شده و از دیتابیس فراخوندیم کد هایی که فرمودید چگونه میشه
header(“Content-Type:application/json”);
include(‘db.php’);
$result = mysqli_query($con,”SELECT * FROM
transactions
WHERE order_id=$order_id”);if(mysqli_num_rows($result)>0){
$row = mysqli_fetch_array($result);
response($order_id);
mysqli_close($con);
}else{
response(NULL, NULL, 200,”No Record Found”);
}
}else{
response(NULL, NULL, 400,”Invalid Request”);
}
}
به نظر میرسه شما php رو حتی اصول ابتدایی رو بلد نیستید.
لطفا بفرمایید ابتدا این موارد ساده رو یاد بگیرید
https://netparadis.com/php-tutorial-1-introduction
با سلام و ممنون از آموزشهای خوب سایتتون
میخواستم یه لطفی کنین یک راهنمائی بنده رو بفرمائید
یک دیتابیس داریم روی یک سرور آنلاین و یک برنامه وب اپلیکیشن داریم روی لوکال میخواستم بدونم آیا با استفاده از RESTful میتونم اطلاعات اون دیتا بیس آنلاین رو توی لوکال به کاربر نشون بدم یا نه ؟
و برای اینکار بهترین روش چی و پیشنهاد میکنید ؟
سلام. بله امکان دریافت اطلاعات در لوکال وجود دارد و میتونید اینگار را انجام بدید.
آموزس زیر را دنبال کنید
https://netparadis.com/php-mysql-rest-api-for-android/
موفق باشید.
سلام
ممنون از توضیحات خوبتون
چرا در مورد توکن یا auth توضیح ندادین
چون خیلی مهم بود
سلام . خوشحالم که مفید واقع شده . حتما این عنوان رو هم به مباحث اضافه می کنیم. ممنونم از توجهتون .
موفق و پیروز باشید.