طراحی API با json

api

در آموزش مقدماتی رابط برنامه نویسی نرم افزار تحت وب نکاتی را که می خواهیم در این سری از آموزش ها بگم را توضیح دادم.

در این مطلب مثلا یک پروژه برای ساخت api برای یک شبکه اجتماعی داریم.

پیشنیاز ها :

  1. نرم افزار XAMPP .
  2. داشتن دانش کمی از php , json ,sql
  3. کمی صبر
  4. حفظ حریم شخصی افراد

خب مثلا من یک شبکه اجتماعی دارم که قسمت دیتابیس کاربران به شکل زیر است.

-- --------------------------------------------------------
 
--
-- Table structure for table `user`
--
 
CREATE TABLE IF NOT EXISTS `user` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `Name` varchar(255) NOT NULL,
  `pass` varchar(32) DEFAULT NULL,
  `screen-name` varchar(120) NOT NULL,
  `Title` varchar(255) NOT NULL,
  `web` varchar(255) NOT NULL,
  `image` varchar(255) NOT NULL,
  `last-activity` int(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
--
-- Dumping data for table `user`
--
 
INSERT INTO `user` (`id`, `Name`, `pass`, `screen-name`, `Title`, `web`, `image`, `last-activity`) VALUES
(1, 'Name', 'pass', 'screen_name', 'Title', 'false', 'image', 235468),
(2, 'ali', 'pass', 'ali', 'EBI', 'http://mgroup.ir', '13931015', 935468),
(3, 'حسن', 'pass', 'hasan', 'یک روز خوب', 'false', '13930804', 4528488);
 
-- --------------------------------------------------------

 

برای جلوگیری از طولانی شدن آموزش فقط بخشی از دیتابیس که لازم هست را توضیح می دهم.

  • id = شماره کاربر است که برای هر کاربر متفاوت است.
  • name = نامی که کاربر برای خود انتخاب کرده است.
  • pass = ما نباید به هیچ وجه رمز کاربر را نمایش دهیم.(ما نیازی به استفاده نداریم).
  • screen-name = نامی که به عنوان نام کاربری انتخاب شده و در آدرس صفحه کاربر نمایش داده می شود.
  • title = عنوانی که کاربر برای صفحه خود در نظر گرفته.
  • web = آدرس سایت یا وبلاگ کاربر که پیوست شده.
  • image = آدرس آواتار کاربر.
  • last-activity = برای اطلاع از آخرین فعالیتی که کاربر انجام داده در این جا فقط id فعالیت را ذخیره می کنیم.

ما اکنون سه نام کاربری نیز در دیتابیس داریم. حالا یک کد اتصال به دیتابیس می نویسیم.

<?php
 
/**
 * @author mgroup
 * @copyright 2014
 */
 
$hostname = 'localhost';
$dbuser = 'mgroup';
$dbpass = '';
$dbname = 'mgroup';
$mgroup = mysql_connect ($hostname, $dbuser, $dbpass);
mysql_select_db ($dbname, $mgroup);
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET names utf8");
 
?>

حالا یک صفحه php ایجاد می کنیم که با آن Api سایت را با آن بنویسیم. که من به نام api ذخیره کردم و مانند زیر برنامه خود را انجام دهید.

توجه داشته باشید که این فقط یک آموزش ساده است و می شود حتی بهتر و پیچیده تر با امنیت بیشتر نیز نوشته شود.

<?php
 
/**
 * @author mgroup
 * @copyright 2014
 */
header('Content-type: application/json');
require_once('db3.php');
if(isset($_GET['user_id']) or isset($_GET['screen_name'])){
    @$id = htmlentities($_GET['user_id']);$ta = 'id';
    if(!$id){$id = htmlentities($_GET['screen_name']);$ta = 'screen-name';}
    $a = mysql_fetch_array(mysql_query("SELECT * FROM `user` WHERE `{$ta}` = '{$id}' LIMIT 1"));
    if($a){
    echo '{';
    echo '"id": ',json_encode($a['id']),',';
    echo '"Name":',json_encode($a['Name']),',';
    echo '"Title":',json_encode($a['Title']),',';
    echo '"screen-name":',json_encode($a['screen-name']),',';
    echo '"urls":','{';
    echo '"web":',json_encode($a['web']),',';
    echo '"image":',json_encode("http://mgroup.ir/f/img/{$a['image']}.png"),'},';
    echo '"last-activity":',json_encode($a['last-activity']);
    echo '}';
    }else{echo 'error';}
    }else{echo 'error';}
?>
  • خط اول برای اتصال به دیتابیس است.
  • خط بعد بررسی می کند تا از وارد شدن نام کاربری یا id کاربر بررسی کن و در صورت نبودن error چاپ کند.
  • در خط بعد از ورود کاراکتری جز عدد جلوگیری می کند و شرط را بر روی فید id قرار می دهید.
  • در خط 13 بررسی می شود آیا چنین رکوردی وجود دارد.
  • از این به بعد بیشتر مربوط به json است در خط 14 و 23  } و {  برای ایجاد یک آبجکت قرار دادیم.
  • حال ما id کاربر با دابل کوتیش چاپ می کنیم “id” تا یک رشته در صفحه ایجاد کنیم , و از تابع json_encode برای encode کردن مقدار استفاده می کنیم.
  • نکته : یک value می تواند یک رشته (string) داخل ، یا یک عدد ، یا true یا false یا null ، یا یک object یا یک array باشد. این ساختارها می توانند تو در تو باشند.
  • در آخر هر یک هم باید یک کاما (,) قرار دهیم توجه: برای آخرین رشته نیازی به کاما ندارد.

خب ما یک صفحه php ایجاد می کنیم بعد از آن برای تست api خود استفاده می کنیم.

<?php
 
/**
 * @author mgroup
 * @copyright 2014
 */
 
$url = file_get_contents('http://url.ir/api.php?user_id=1');
$page = json_decode($url, true);
echo $page["Title"];
?>

 

  • ما برای اتصال در اینجا از تابع file_get_contents استفاده کردیم ولی بهتر هست از تابع get_data استفاده شود.
  • حال ما آنچه در قبل  با تابع json_encode کد کردیم را با تابع json_decode  به راحتی decode می کنیم .
  • حال ما هر رشته ای را در  می خواهیم به راحتی دریافت می کنیم.
  • نکته: من ار اینجا از آبجکت برای url استفاده کردم که برای نمایش آن باید به صورت زیر مقدار خود را در صفحه چاپ کنید.
<?php
 
/**
 * @author mgroup
 * @copyright 2014
 */
 
$url = file_get_contents('http://url.ir/api.php?user_id=1');
$page = json_decode($url, true);
echo $page["url"]["web"];
echo $page["url"]["image"];
?>

امیدوارم آموزش مفیدی برای شما بوده باشد لطفا نظر و پیشنهاد های خود را در مورد این آموزش بنویسد.