50درصد تخفیف سورس فروشگاهی دیجی کالا + اپلیکیشن اندروید تا پایان این هفته - کد تخفیف : off50
با تخفیف میخرم

اصول وب سرویس RESTful – بخش آخر

  • آپدیت شده در تاریخ

اصول وب سرویس RESTful

با بخش پنجم (آخر) از اصول وب سرویس RESTful  با شما همراه هستیم .در مقالات قبلی تمام آموزش های مورد نیاز برای ساخت وب سرویس restful بر اساس معماری و قوانین REST را دیدیم (وب سرویس REST چیست).

در این بخش قصد داریم به شما استفاده نوع داده json , نامگذاری و ..  به عنوان یکی از اصول پیشنهادی در طراحی API های RESTful اشاره کنیم.

 

استفاده از JSON در پاسخ های وب سرویس RESTful

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

تنها از JSON استفاده کنیم.

اگرچه فرمت XML کاربرد های بسیاری دارد و مزایای زیادی هم در بسیاری از برنامه ها دارد اما در اینجا باید گفت این فرمت برای پاسخ یک API بسیار طولانی است، پارس کردن ان نیز دشوار است،

به آسانی نمی توان آن را خواند و علاوه بر اینها با مدل های داده ای مرسوم در زبان های برنامه نویسی نیز سازگاری زیادی ندارد. بنابه این دلایل و بسیاری از دلایل دیگر، برنامه های متعدد از جمله YouTube، Twitter و … در حال کنار گذاشتن XML هستند. یکی از دلیل این ادعا هم میتواند اختلاف گرایش به سمت این دو

در Google Trend باشد.

اصول وب سرویس RESTful

نامگذاری پارامتر ها بر اساس 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 بتوانید میزان توسعه پذیری , خوانایی و استفاده آسان از آن را تا حد زیادی افزایش بدید و به اصول استاندارد آن برسید .

موفق پیروز باشید.

حسن شفیعی علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم
برچسب ها :

آموزش های رایگان بیشتر در اینستاگرام ما ...

NETPARADIS /
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۱۰)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. reza ۷ مهر ۱۳۹۹

    خیلی از سخاوت شما شرمنده شدم
    واقعا صنعت ما به افرادی مانند حضرتعالی نیازمنده

    پاسخ
    1. حسن شفیعی ۷ مهر ۱۳۹۹

      خواهش می کنم. خوشحالیم که مفید واقع شده.
      موفق باشید.

      پاسخ
  2. reza ۷ مهر ۱۳۹۹

    سلام و ممنون از زحمات جنابعالی
    راهنمایی بفرمایید
    $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 کد های این فایل چطور نوشته بشه ؟

    پاسخ
    1. حسن شفیعی ۷ مهر ۱۳۹۹

      بفرمایید

      $code = $_POST['code'];

      if($code == 'somthing') $result = 100;
      else $result = 0;

      echo json_encode(['result' => $result]);

      پاسخ
      1. reza ۷ مهر ۱۳۹۹

        ممنون از پاسخ شما
        با توجه به متغیر
        $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”);
        }

        }

        پاسخ
      2. حسن شفیعی ۷ مهر ۱۳۹۹

        به نظر میرسه شما php رو حتی اصول ابتدایی رو بلد نیستید.
        لطفا بفرمایید ابتدا این موارد ساده رو یاد بگیرید
        https://netparadis.com/php-tutorial-1-introduction

        پاسخ
  3. محمد ۱۴ اردیبهشت ۱۳۹۸

    با سلام و ممنون از آموزشهای خوب سایتتون
    میخواستم یه لطفی کنین یک راهنمائی بنده رو بفرمائید
    یک دیتابیس داریم روی یک سرور آنلاین و یک برنامه وب اپلیکیشن داریم روی لوکال میخواستم بدونم آیا با استفاده از RESTful میتونم اطلاعات اون دیتا بیس آنلاین رو توی لوکال به کاربر نشون بدم یا نه ؟
    و برای اینکار بهترین روش چی و پیشنهاد میکنید ؟

    پاسخ
    1. حسن شفیعی ۱۴ اردیبهشت ۱۳۹۸

      سلام. بله امکان دریافت اطلاعات در لوکال وجود دارد و میتونید اینگار را انجام بدید.
      آموزس زیر را دنبال کنید
      https://netparadis.com/php-mysql-rest-api-for-android/
      موفق باشید.

      پاسخ
  4. Mobin ۲۴ خرداد ۱۳۹۷

    سلام
    ممنون از توضیحات خوبتون
    چرا در مورد توکن یا auth توضیح ندادین
    چون خیلی مهم بود

    پاسخ
    1. حسن شفیعی ۲۴ خرداد ۱۳۹۷

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

      پاسخ
دوره های آموزشی

دانلود رایگان کتاب آموزش PHP

صفر تا صد PHP و MySQL را یکجا یاد بگیرید
همین الان دانلود کن
نگران نباشید. ایمیل‌های مزاحم نمی‌فرستیم
close-link