RESTful API (REST API) چیست ؟

به احتمال زیاد شما هم با واژه RESTful اشنایی دارید یا در اگهی های استخدامی به طور مکرر شنیده اید.قبل از اینکه موضوع رو شروع کنید اجازه بدید خود کمی بیشتر درباره Api صحبت کنیم؛ api مخفف application programming interface میباشد که به معنی ساده میتوان گفت صفت و خاصیت یک شی را معرفی میکند!در اموزشا معمولا با همون وب سرویس ها یکی در نظر میگیرن ولی در اصل با هم فرق دارند.مثلا APi های مربوط به ویندوز یا Api های یک سخت افزار ک خریداری کرده اید و...در تعریفی دیگر با استفاده از API دو ماشین مختلف با سیستم عامل های مختلف بدون هیج وابستگی میتوانند با هم ارتباط برقرار کنند!مثلا سیستم عامل گوشی های امروزی که با کثرا یا یک وب سوریس خاص در ارتباط هستند.؛ Web Api : یا وب سرویس ها ، مجموعه ای از چند سرویس اینترنتی که در بستر نت با استفاده از پروتکل http کار میکنند.معمولا خروجی ها با فرمت xml و در حال حاظر با فرمت json میباشند ک به صورت cross platform میتوان بر رویه سیستم های مختلف پردازش انجام داد.برای مثال بر رویه لینک زیر کلیک کنیدwww.domain.com/todos/1شما با هر سیستم عامل یا پلتفرمی که کلیک کرده باشید خروجی رابه شکل زیر دریافت خواهید کرد{ &quotuserId&quot: 1, &quotid&quot: 1, &quottitle&quot: &quotdelectus aut autem&quot, &quotcompleted&quot: false }خروجی بالا یک داده Json تشکیل شده ازKey,Value است که میتوان در هر سیستمی بر رویه ان پردازش انجام داد در این مقاله میخواهیم RESTful API را تشریح کنیم.توجه کنید باید درک این مقاله باید حداقل اشنایی با وب سرویس ها را داشته باشید؛ RESTful چیست : یک سری از قوانینی برای طراحی web api میباشد!برنامه نویس با دنبال کردن این قوانین میتواند کد تمیز و ایزولیه ای بنویسد! میتوان گفت عملگرد REST خیلی شبیه SOLID میباشد!چون هردو برنامه نویس را مجبور به انجام یکسری قرارداد و قوانین میکنند.در ادامه قصد داریم این چند قانون رو مورد برسی انجام بدیمتوجه کنید ممکن است در سایت های مختلف به روش های گوناگونی REST را تشریح کرده باشد.ما در این مقاله طبق این سایت , این سایت پیش میرویمقوانین Rest در سایت های مختلف به صورت های متفاوتی بیان شده است. با توجه به منابع معرفی شده میتوان در 4 قانون کلی REST را پیاده سازی کرد.Resources (URIs)HTTP methodsHTTP headersStatus Codes ؛ Resources (URIs) : برای نام گذاری URLها اسمی که انتخاب میکنید باید بیانگر نوع کار وب سرویس تان باشد.به طور مثالgetUser(1234) createUser(user) deleteAddress(1234)نکته بعدی که باید به ان توجه کرد فرمت صدا زدن وب سرویس ها میباشد.به URL زیر دقت کنیدhttp://example.com/foo/foo/foo?bar/bar/barادرس بالا به صورت query parameters میباشد که با استفاده از یک Key,Value مقادیر را ارسال میکند همچنین با علامت سوال (؟) میتوانید مقادیر متفاوتی را ارسال کنید. query parameters ها جزو قوانین REST نمیباشند توسیه نمیشه استفاده کرد برای اینکه URL به صورت REST داشته باشیم باید با فرمت زیر URL ها رو ایجاد کنیمhttp://api.example.com/device-management/managed-devices http://api.example.com/device-management/managed-devices/{device-id} http://api.example.com/user-management/users/http://api.example.com/user-management/users/{id}ادرس های بالا همه به صورت REST میباشند برای وضوح بیشتر داستان به URL زیر دقت کنید/page.php?id=202&date=07112012 :=> query parameters/page/202/07112012/ or /{page}/{id}/{data} :=> RESTبرای جدا سازی مقادیر REST از / استفاده میکنیم ؛ HTTP methods : همانطور که قبلا گفتیم با استفاده از پروتکل http بین کلاینت و سرور ارتباط برقرار میکنیم.متد هایی که با http میتوان در هنگام فراخوانی استفاده کرد به صورت زیر استGETPOSTPUTDELETEتوجه کنید ما بیش از 4 نوع متد داریم ولی تقریبا میتوان گفت با چهار متد بالا میتوان تمام درخواست های http را هندل کرد حتی در بعضی از پروژها فقط از GET,POST استفاده میکنند که توصیه نمیشود.برای اشنایی به سایر Http Method ها میتوانید رو این لینک کلیک کنید با اسم Http Method ها میشه نحوه کار ان را فهمید ولی به طور خلاصه هر کدام را تشریح خواهیم کرد.؛GET : برای دریافت داده ها میباشند که در GET اول کل داده ها گرفته میشود و در GET چهارم با استفاده از URL REST یک Data Object دریافت میکند.؛ PUT : برای ابدیت رویه داده ها میباشد که میتوان همین متد را با POST جایگزین کرد.؛ DELETE : برای حذف یک رکورد میباشد همچنین میتوان این متد را هم با POST جایگزین کرد.؛ POST : برای ارسال داده میباشد که داده ها را با فرمت های مختلف میتوان ارسال کرد.؛ HTTP headers : ؛ HTTP headers ارایه دهنده اطلاعت بین سرور و کلاینت است که میتوان برای اهداف مختلف باشند مثلا عملیات authentication , caching , ... برای اینکه با HTTP headers بیشتر اشنایی داشته باشیم بر رویه مرورگر خود inspect گرفته وارد تب Network شوید و یک درخواست http فرخوانی کنید.با مشاهده شکل بالا میتوان فهمید که 4 نوع HTTP headers داریم که هرکدام اطلاعت مروبط به خود را نگه داری میکنند.یکسری headers ها هستند که همراه Requst بسته به پیاده سازی سرور باید ارسال شود.به عنوان مثال Content-Type: application/jsonدر مثال بالا به سرور اعلام میکنید داده ارسالی از نوع جیسون میباشد؛ Status Codes : Status Codesها بیانگر نوع Response میباشد و باید حتما در پروژه رعایت شود.به طور مثال وقتی داده ای در سررو وجود ندارد باید همراه خطایی که برگشت داده میشود کد پیدا نشود هم برگشت داده شود! Status Codesطبق یک استاندارد تعریف شده اند برای مثال کد 200به معنی ok درستی کار میباشد.نمونه ای از Status Codes به شکل زیر است 201 – CREATED204 – NO CONTENT304 – NOT MODIFIED400 – BAD REQUEST401 – UNATHORIZED403 – FORBIDDEN404 – NOT FOUNDدر منابعی که بالا معرفی کردیم چند قانون بالا رو تشریح کرده بودن ولی در خیلی از مقاله ها چند قانون دیگه از REST رو تشریح کرده اند ؛ Versioning : ورژن بندی apiهامیتونه نقش خیلی مهمی در پروژه ایفا کنه برای مطالعه Versioning Api میتوانید از این لینک استفاده کنید ؛ Use JSON :وب سرویس ها میتوانند هم به صورت xml یا json داده را بازگشت دهند هنگام استفاده از REST نوع خروجی باید حتما Json باشد.البته امروزه تقریبا همه وب سرویس ها به صورت پیش فرض از Json استفاده میکنند.امیدوارم توانسته باشم مقاله مفیدی برای کسایی که در جست و جو علم و پیشرفت هستند رو اریه داده باشم https://www.linkedin.com/in/sobi-mozafari-261993133/ اگه از مقاله راضی بودید میتونید از لینک زیر برام قهوه بخرید : ) https://www.coffeete.ir/sobhan