روشهای کار با API در پایتون
پایتون به عنوان یکی از محبوبترین زبانهای برنامهنویسی دنیا، مورد استفاده بسیاری از برنامهنویسان در موقعیتهای مختلف است. برخی حتی پیشبینی میکنند که پایتون به زودی جای زبانهای کامپایلی مانند C و جاوا به عنوان پرکاربردترین زبان برنامهنویسی دنیا خواهد گرفت. این موضوع در کنار گسترش کاربردهای APIها، باعث شده تا نیاز به یادگیری کار با API در پایتون بیش از پیش احساس شود. اما قبل از یادگیری روشهای کار با API در پایتون، نگاه مختصری به REST APIها خواهیم داشت.
REST API چیست؟
REST API یکی از انواع API است که از پروتکل HTTP برای تعامل بین سرویسهای مختلف بهره میبرد. هر REST API دارای پنج ویژگی اصلی است که آن را متمایز میکند:
- رابط کاربری یکپارچه: اجزای رابط کاربری REST API به صورت یکپارچه طراحی شده تا تعاملها بهبود پیدا کنند.
- معماری کلاینت-سرور: طراحی مبتنی بر معماری کلاینت-سرور به توسعهدهندهها امکان میدهد تا کلاینت و سرور را به صورت مستقل از یکدیگر توسعه و بهبود دهند.
- بدون وضعیت: بدون وضعیت (Stateless) بودن یعنی در هر درخواست باید تمام اطلاعات لازم ارسال شود.
- قابل کش شدن: هر درخواستی که قابل کش شدن باشد، به کلاینت اجازه میدهد تا در درخواستهای مشابه از آن استفاده کند. به این ترتیب سرعت ارسال درخواست و دریافت پاسخ بهبود چشمگیری پیدا میکند.
- سیستم لایهای: هر لایه تنها مجاز است لایههای که با آنها ارتباط دارد را مشاهده کند و به سایر لایهها دسترسی ندارد. این کار باعث افزایش امنیت API میشود. Api چیست
قبل از شروع این موارد را باید بدانید
برای استفاده از REST APIها در پایتون، باید به یک کتابخانه متصل شویم. در پایتون ۲ کتابخانه unirest و در پایتون ۳ کتابخانه requests بهترین گزینههای موجود هستند. در ادامه این پست ما از پایتون ۳.۶ و کتابخانه requests استفاده میکنیم. برای این کار کافی است تا دستور زیر را برای نصب از طریق pip اجرا کنیم:
pip install requests |
متدهای HTTP
در HTTP متدهای مختلفی داریم که چهار مورد زیر پرکاربردترین متدها هستند:
- GET: دریافت داده از سرور
- POST: اضافه کردن ریسورس جدید در سرور
- PUT: تغییر داده موجود
- DELETE: پاک کردن داده موجود
کدهای وضعیت HTTP
کدهای وضعیت HTTP به همراه پاسخ ارسال شده و وضعیت درخواست را نشان میدهند. برای مثال کد وضعیت ۲۰۰ (OK) یعنی درخواست موفقیتآمیز بوده است. کد ۳۰۱ (Moved Permanently) یعنی ریسورس درخواستی به یک آدرس دیگر منتقل شده و به آن ریدایرکت میکند. کدهای سری ۴۰۰ (۴۰۱ تا ۴۰۴) مربوط به خطاها بوده و به معنای وجود اشکال در درخواست یا ریسورس است. کد ۵۰۰ نیز مربوط به زمانی است که ارتباط با سرور برقرار نمیشود.
استفاده از API در پایتون
به طور کلی یک درخواست HTTP در پایتون به صورت زیر نوشته میشود:
... @app.route('/programming_languages/<programming_language_name>', methods=['GET', 'PUT', 'DELETE']) def programming_language_route(programming_language_name): if request.method == 'GET': return get_programming_language(programming_language_name) elif request.method == "PUT": return update_programming_language(programming_language_name, request.get_json(force=True)) elif request.method == "DELETE": return delete_programming_language(programming_language_name) |
این درخواست متدهای مختلف را روی یک پایگاه داده حاوی اطلاعات زبانهای برنامهنویسی مختلف را پیادهسازی میکند. ما میتوانیم کد وضعیت درخواست را با استفاده از دستور status_code به صورت زیر مشاهده کنیم:
print(response.status_code) >>> 200 |
اندپوینت چیست؟
اندپونیت یک آدرس خاص در سطح وب (برای مثال: https://api.pod.ir/srv/sc/nzh/doServiceCall) است که API با مراجعه به آن اطلاعات درخواستی ما برمیگرداند و یا تغییرات خواسته شده را در آن اعمال میکند. کد زیر نحوه درخواست یکی از سرویسهای پادیوم را نشان میدهد:
import requests response = requests.get(f"https://api.pod.ir/srv/sc/nzh/doServiceCall", headers={ "_token_": "توکن دریافتی از پنل", "_token_issuer_": "1", "Content-Type": "application/x-www-form-urlencoded" } body={ "scProductId": "شناسه سرویس در حال استفاده", "scApiKey": " API Key دریافتی برای سرویس مورد نظر از پنل کسب و کاری" } ) |
در چنین شرایطی ما یک پاسخ JSON زیر دریافت میکنیم:
[ { "id": 1, "name": "اذربایجان شرقی" }, { "id": 2, "name": "اذربایجان غربی" }, ... ] |
پایتون با وجود پکیج json پشتیبانی خوبی برای فایلهای JSON ارائه میدهد. پکیج json جزیی از کتابخانه استاندارد پایتون است و از این رو برای استفاده از آن، نیازی به نصب جداگانه پکیج نیست.
دستور نیز در پس از دریافت پاسخ با توجه به کد وضعیت درخواست، یکی از پیامهای «درخواست موفقیتآمیز بود» یا «درخواست موفقیتآمیز نبود» را منتشر میکند. این برای مواردی مناسب است که تنها میخواهیم موفقیت یا عدم موفقیت یک درخواست را بدانیم و نیازی به کد وضعیت نداریم:
if response: print('Request is successful.') else: print('Request returned an error.') |
قدم بعدی چیست؟
حال که نحوه کار با APIها در پایتون را یاد گرفتهاید، زمان آن رسیده تا اولین API خودتان را توسعه داده و منتشر کنید. راههای زیادی برای انتشار API در سطح وب وجود دارد، اما بهترین راه برای این که مطمئن شوید تعداد زیادی از کاربران API شما را میبینند و از آن استفاده میکنند، انتشار API در بازارچههای API است. بازارچههای API بستر مناسبی را برای ارائهدهندگان و دریافتکنندگان API فراهم میآورد تا در آن به صورت شفاف به رقابت پرداخته و سرویس خود را به مشتریان معرفی کنند. با گسترش استفاده از APIها محبوبیت بازارچههای API نیز افزایش یافت و روزانه هزاران نفر از خدمات ارائهشده در این بازارچهها بهره میبرند. در کشور ما نیز بازارچه API و خدمات دیجیتال پادیوم با ایجاد چنین بستری، از یک سو طیف مشتریان توسعهدهندگان و تامینکنندگان API را گسترش داده و از سوی دیگر به مشتریان اجازه میدهد تا با انتخاب بهترین سرویس، نیازهای خود را برطرف کنند.
بازارچه API پادیوم
پادیوم یک پلتفرم دوسویه است که با هدف تسهیل روند راهاندازی و توسعه کسبوکارها بر بستر دیجیتال توسعه یافته است. در حال حاضر تامینکنندگان مختلفی مانند همراه اول، شهرداری مشهد، عصر داده، داتکس و بانک پاسارگاد در پادیوم خدمات خود را ارائه میدهند و کسبوکارها میتوانند سرویسهای گوناگونی مانند درگاه پرداخت در زمینههای مالی و بانکی، بیمه، حملونقل، نقشه، احراز هویت و پرداخت را دریافت کنند.
برای استفاده از خدمات پادیوم کافی است تا یک حساب کسبوکاری ایجاد و بدون نیاز به طی کردن روندهای اداری زمانبر، سرویسهای خود را دریافت کنید. پشتیبانان پادیوم نیز همواره پاسخگوی سوالات و مشکلات شما بوده و در تمام مراحل از ثبتنام تا پیادهسازی سرویس، در کنار شما هستند.
دیدگاه تان را بنویسید