سرویسهای وب
یک سرویس وب، مجموعهای از استانداردها و پروتکلها است که اپلیکیشنها و سیستمها برای تبادل داده در بستر اینترنت از آن استفاده میکنند. یک سرویس وب میتواند با هر نوع زبان برنامهنویسی نوشته شود و مستقل از سیستمعامل است. بهعنوان نمونه یک اپلیکیشن ساختهشده با PHP که در یک سرور لینوکس اجرا میشود میتواند با یک اپلیکیشن اندروید ساختهشده با جاوا که در سیستمعامل اندروید اجرا میشود ارتباط برقرار کند. (شکل 1)
شکل 1
REST چیست؟
رابط برنامهنویسی اپلیکیشن یا بهاختصار API مجموعهای از روشهای تعریفشده مشخص از ارتباطات بین اجزای نرمافزاری مختلف است. یک API خوب با فراهمسازی تمام اجزای مورد نیاز برای ساخت باعث میشود تا توسعه یک برنامه کامپیوتری سادهتر انجام شود. در اینجا مجموعهای از قوانین وجود دارد که به برنامهها اجازه میدهد با یکدیگر گفتوگو کنند. توسعهدهنده، API را روی سرور ایجاد میکند و به کلاینت اجازه میدهد با آن گفتوگو کند. باوجود اینکه مشخصههای APIهای مختلف با یکدیگر متفاوت است، هدف نهایی فراهمسازی امکاناتی برای برنامهنویسان است تا از طریق بهکارگیری خدمات ارائهشده توسط API به توسعه نرمافزاری خود بپردازند. معروفترین روش برای ارائهAPIهای وب REST است.
REST (سرنام Representational State Transfer) یک معماری نرمافزاری مستقل است که بسیاری از خصوصیات اساسی و پروتکلهایی که رفتار کلاینتها و سرورها را کنترل میکنند، فراهم میکند. این رویکرد در طراحی API از همان مزایای مکانیسمهای اینترنتی (مبتنی بر پروتکل HTTP) بهرهمند میشود که برای نمایش صفحات معمولی وب استفاده میشود، بنابراین همان مزیت پیادهسازی سریعتر و سادگی توسعه در اینجا نیز وجود خواهد داشت. از آنجا که REST APIها از HTTP استفاده میکنند در عمل میتوان آنها را در هر زبان برنامهنویسی استفاده کرد.
منظور از RESTful چیست؟
هر API که ویژگیهای زیر را داشته باشد، بهعنوان یک RESTful API شناخته میشود:
• معماری کلاینتـ سرور: کلاینت بهعنوان front-end و سرور بهعنوان back-end شناخته میشود. به این نکته مهم توجه داشته باشید كه هر دوی اینها مستقل از یکدیگر هستند.
• مستقل: هیچ دادهای نباید در زمان پردازش انتقال درخواست روی سرور ذخیره شود. وضعیت جلسه (session) باید در سمت کلاینت ذخیره شود.
• قابل کش شدن: کلاینت باید این توانایی را داشته باشد که پاسخها را در یک کش ذخیره کند. چنین کاری اصولا عملکرد API را بهبود میبخشد.
RESTful API چیست؟
یک RESTful API (که با عنوان یک RESTful سرویس وب نیز شناخته میشود) یک سرویس وب است که با استفاده از پروتکل HTTP و اصول REST پیادهسازی میشود و شامل مجموعهای از منابع است که متدهای HTTP (GET, PUT, POST, DELETE) را به خدمت میگیرد. این مجموعه از منابع در نهایت در یک فرم استاندارد (معمولا XML) که میتواند هر نوع رسانه اینترنت معتبر باشد، ارائه میشود. (شکل 2)
RESTful APIها قادر به استفاده از HTTP برای انجام عملیات ساخت، اجرا، بهروزرسانی و حذف داده و منابع هستند. فرمتهای درخواست RESTful API معروف شامل REST ، XML-RPC ،SOAP است. فرمتهای پاسخ RESTful API معروف نیز شامل REST، XML-RPC، SOAP، JSON و PHP هستند.
شکل 2
JSON
JSON (سرنام JavaScript Object Notation ) روشی است که به برنامهها اجازه میدهد به تبادل اطلاعات بپردازند. APIها روشی برای برنامهها هستند تا بتوانند با یکدیگر ارتباط برقرار کنند، اما از آنجا که آنها قدرت تکلم ندارند، به روشی نیاز دارند تا بتوانند دادهها و اطلاعاتی را که در حال تبادل آن هستند، توصیف کنند. JSON برای جداسازی دادهها و دادن اطلاعات ساختاری معنادار از براکت، نقلقول، کولون و کاما استفاده میکند، بهاینترتیب کامپیوترها میتوانند تفاوت بین نام، نام خانوادگی یا هر گونه اطلاعات دیگری را که بهطور بالقوه این دادهها را توصیف میکند، تشخیص دهند.
JSON به یکی از روشهای مورد علاقه برنامهنویسان برای فعالسازی ارتباطات API تبدیلشده است. با این روش میتوان یک راهکار ساده و سبک را برای تبادل داده در محیط اینترنت، درحالیکه ساختار و معنای این داده حفظ میشود، فراهم کرد.
امنیت
امنیت API بزرگترین چالشی است که سازمانها به دنبال آن هستند تا طی سالهای پیش رو برطرف شود. بر اساس تحقيقات انجامگرفته SmartBear، امنیت چالش شماره یک فناوری شناختهشده است. 41.2% از مشارکتکنندگان این تحقيق نیز اعلام کردهاند، امنیت بزرگترین چالش فناوری API است که آنها امیدوار هستند، روزی برطرف شود. در حال حاضر نزدیک به نیمی از ارائهدهندگان API ابزاری را برای آزمایش امنیت API به خدمت گرفتهاند.
در زمان طراحی و توسعه یک RESTful API جنبههای امنیتی باید موردتوجه جدی قرار گیرد. شما باید مجوزهای دسترسی را بهویژه در مورد متدهایی مثل DELETE (برای حذف منابع) و PUT (بهروزرسانی منابع) بهطور واضح مشخص کنید. این متدها تنها باید توسط کاربران تایید صلاحیت شده قابلدسترس باشند و سابقه هر کدام از این فراخوانیها نیز ذخیرهسازی شود. برای برقراری ارتباطات حتما باید از یک پروتکل رمزگذاری مثل TLS یا SSL که امنیت ارتباطات را در یک شبکه کامپیوتری فراهم میکنند، استفاده شود.
در یک حمله DOS (سرنام Denial of Service ) مهاجم معمولا با ارسال حجم زیادی پیغام از شبکه یا سرور مجوزهایی را درخواست میکند که پاسخهای نامعتبر را به همراه دارد. اگر اقدامات امنیتی درست انجام نشود حملههای DOS میتواند عملکرد یک RESTful API را مختل کند. امروزه حتی اگر API شما برای محیطهای عمومی نیز در نظر گرفته نشده باشد، همچنان ممکن است توسط دیگران قابلدسترس باشد. این به معنای آن است که امنیت REST API بیشتر از هر زمان دیگری ارزشمند و حیاتی شده است. تصور کنید که فرد یا گروهی موفق به انجام یک حمله DOS شود. بهاینترتیب، تمام کلاینتهای متصل دیگر قادر نخواهند بود به API شما دسترسی داشته باشند.
کلیدهای API
کلیدهای API توسط بسیاری از API های وب استفاده میشوند تا نوعی از کنترل دسترسی را فراهم کنند. کلیدهای API در واقع ابزاری برای شناسایی و تشخیص اپلیکیشن و کاربر هستند و نمیتوان آنها را یک پروتکل امنیتی مستقل و کامل در نظر گرفت. خدمات REST عمومی بدون کنترل دسترسی با تهدیداتی مواجه هستند و میتوان از کلیدهای API برای کم کردن این تهدیدات استفاده کرد. سازمانها اغلب از این شیوه برای کسب درآمد از API استفاده میکنند، به این شكل که بهجای مسدودکردن یا باز گذاشتن کل سرویس به مشتريان بر اساس پلن دسترسی خریداریشده اجازه دسترسی داده میشود.
رابط برنامهنویسی اپلیکیشن یا بهاختصار API مجموعهای از روشهای تعریفشده مشخص از ارتباطات بین اجزای نرمافزاری مختلف است
معمولا یک کلید API امکان دسترسی کامل به تمام اعمالی را که یک API قادر به انجام آن است، فراهم میکند که شامل واردکردن دادههای جديد و حذف دادههای موجود نیز میشود. اگر شما از یک کلید API یکسان در چند اپلیکیشن استفاده کنید، نقص در یک اپلیکیشن میتواند دادههای کاربران شما را از بین ببرد. بعضی از اپلیکیشنها به کاربران اجازه میدهند تا کلیدهای API جدید تولید کنند یا کلیدهای نامعتبر را لغو کنند. توانایی تغییر یک کلید API محدودیتهای امنیتی را کاهش میدهد.
چرا و چگونه باید از یک RESTful API استفاده کرد؟
از RESTful API بهمنظور ایجاد اپلیکیشنهای توزیعشده و مستقل در بستر اینترنت با هدف افزایش سطح عملکرد، گسترشپذیری، سادگی، قابلیت تغییر، قابلیت دسترسی و قابلیت اطمینان یک اپلیکیشن استفاده میشود.
توسعه یک RESTful API موفق و پایدار به عواملی از جمله ویژگیها، عملکرد کلی و قابلیت استفاده از آن هم برای توسعهدهندگان و هم میانگین کاربران بستگی دارد. برای تصمیمگیری در مورد طراحی هر RESTful API و اطمینان از کیفیت و کارآیی آن باید به نکاتی توجه شود که در ادامه به چند مورد مهم اشاره خواهیم کرد.
پیادهسازی کدگذاری SSL (سرنام Secure Socket Layer)
اینترنت امکان دسترسی جهانی به APIها را فراهم میکند که به طیف گستردهای از نقاط دسترسی از خانهها و مکانهای خصوصی تا مکانهای عمومی مثل کتابخانهها و سالنهای انتظار منجر میشود. تبادل داده در چنین محیط گستردهای میتواند امنیت آن را تهديد کند. از طریق SSL ارتباطات بهصورت کدگذاری شده شکلگرفته و تنها توسط فرستنده و گیرنده قابلدسترس خواهد بود. علاوه بر این، کدگذاری SSL نیاز به تایید هویت تکتک درخواستهای API را از بین برده و این فرآیند را با علامتهای رمزی دسترسی جایگزین میکند.
مستندات دقیق API
قابلدرک بودن از جمله ویژگیهای اصلی یک API موفق است که میتواند از طریق مستندات دقیق به دست آید. از آنجا که این مستندات کل API ویژگیها و عملکرد آن را بهصورت جامع توضیح میدهد، توسعهدهندگان اغلب در هنگام یکپارچهسازی، اشکالزدایی و مراحل تعمیر و نگهداری به آن مراجعه میکنند.
مستندسازی باید روی جزییات رفتار API و پاسخهای تولیدشده بهعنوان نتیجهای از کوئریهای مشخص متمرکزشده باشد. اگر موضوع API انجام اصلاحات و تغییرات باشد، مستندات باید بر اساس تغییرات اعمالشده بهروزرسانی شود.
مدیریت نسخههای API
برای اطمینان از بازدهی بیشتر در زمان اجرا و ایجاد موارد خاص در برابر درخواستهای پشتیبانی نشده که مستقیم به ماژولهای API مرتبط هستند، نسخهبندی یک API ضروری است. با امکان برگشت به نسخههای قدیمی API میتوان به قابلیتهای هر دو نسخه بهطور همزمان دسترسی داشت.
APIها بهطور مداوم در حال پیشرفت هستند تا بتوانند خود را با نیازهای کاربران وفق دهند و انجام آن مستلزم نسخهبندی پروتکلها است. این نسخهبندی به توسعهدهندگان اجازه میدهد توسعه API خود را مرحلهبهمرحله انجام داده و طی چند نسخه منتشر کنند.
ترکیب API با منابع مرتبط
برای بهینهسازی اندازه و عملکرد یک اپلیکیشن معمولا APIها از منابع مرتبط با آنها جداسازی میشوند. این رویکرد در سادهسازی، اغلب باعث محدودیت در عملکرد کلی و تاثیر منفی در تجربه کاربر میشود. بارگذاری خودکار منابع مرتبط باقابلیتهای API نهتنها عملکرد کلی را بهبود میبخشد، بلکه نیاز به احراز هویت را برای فعال کردن درخواستهای هر API جداگانه برطرف میکند.
از آنجا که توسعه یک API RESTful در واقع یک کار چالشبرانگیز است که به عوامل و اجرای متعددی نیاز دارد، میتوان آن را با دنبال کردن یک رویکرد از پیش تعریفشده ساده کرد. با ترکیب این چند اصل مهم در استراتژی طراحی RESTful API میتوان اطمینان حاصل کرد که API شما در زمینه اصلاحات و تغییرات انعطافپذیرتر، امنتر و ویژگیهای آن برای هر دو سمت توسعهدهندگان و کاربران نهایی قابلفهمتر خواهد بود.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟