قسمت اول – کتابخانه Requests
نوشتن APIها در سایتها کاربردهای متعددی دارد و به تعامل سایت با دیگر برنامهها و خدمات کمک میکند. APIها (رابط برنامهنویسی کاربردی) امکاناتی را فراهم میکنند که از طریق آنها سایتها میتوانند دادهها و قابلیتهای خود را در اختیار توسعهدهندگان دیگر قرار دهند. این امکان منجر به افزایش کارایی و انعطافپذیری سایتها میشود.
کاربردهای نوشتن API در سایتها
- ارتباط با برنامههای دیگر: APIها امکان تبادل داده بین سایتها و برنامههای دیگر را فراهم میکنند. بهعنوان مثال، میتوان از API برای اتصال یک سایت به یک برنامه موبایل، برنامه دسکتاپ، یا حتی دیگر سایتها استفاده کرد.
- ارائه خدمات به برنامههای ثالث: بسیاری از سایتها APIهای عمومی منتشر میکنند تا برنامههای ثالث بتوانند از امکانات سایت استفاده کنند. برای مثال، APIهای نقشهها، اطلاعات هواشناسی، اخبار، قیمت ارز و غیره به دیگر توسعهدهندگان این امکان را میدهند تا از دادههای آنها در اپلیکیشنهای خود استفاده کنند.
- یکپارچگی و اشتراکگذاری دادهها: APIها به سایتها اجازه میدهند دادهها را بین سیستمهای مختلف به اشتراک بگذارند. بهعنوان مثال، یک API بانک میتواند دادههای مالی و تراکنشها را با اپلیکیشنهای حسابداری یا دیگر سامانههای مدیریت مالی به اشتراک بگذارد.
- بهروزرسانی دادهها و اطلاعات بلادرنگ: APIها برای فراهم کردن دادههای بهروز و بلادرنگ بسیار مناسب هستند. سایتها میتوانند از API برای ارائه دادههای تغییرپذیر مانند قیمت سهام، وضعیت حملونقل عمومی، یا دادههای مربوط به وضعیت آبوهوا استفاده کنند.
- افزایش تعامل کاربران با سایت: سایتهایی که از API استفاده میکنند، میتوانند خدمات شخصیسازی شده و جدیدی به کاربران ارائه دهند. برای مثال، APIهای رسانههای اجتماعی میتوانند به کاربران اجازه دهند محتوا را به راحتی در سایتها به اشتراک بگذارند یا از طریق سایت به اطلاعات پروفایل و فعالیتهای خود دسترسی پیدا کنند.
- مدیریت و اتوماسیون فرآیندها: APIها در ایجاد خودکارسازی فرآیندها بسیار کاربردی هستند. به عنوان مثال، با استفاده از API، میتوان فرایندهای خرید، انبارداری، و صدور فاکتور را به طور خودکار انجام داد.
- افزایش امنیت و کنترل دسترسی به دادهها: با استفاده از APIها، میتوان دسترسی به دادهها را محدود کرده و امنیت بهتری برای آنها فراهم کرد. بسیاری از APIها از توکنهای احراز هویت برای کنترل دسترسی به دادهها استفاده میکنند و اجازه دسترسی فقط به کاربران معتبر را میدهند.
- ایجاد گزارشها و آنالیزهای پیشرفته: APIها امکان استخراج دادههای مهم از سایتها و تجزیه و تحلیل آنها را به راحتی فراهم میکنند. برای مثال، سایتهای تجاری میتوانند گزارشهای مربوط به فروش، رفتار کاربران، و عملکرد محصولات را از طریق APIها استخراج کنند و آنالیز نمایند.
مثالهای کاربردی API در سایتها
- پرداخت آنلاین: بسیاری از سایتهای فروشگاهی از APIهای درگاههای پرداخت مثل Stripe یا PayPal استفاده میکنند تا فرآیند پرداخت آنلاین را مدیریت کنند.
- ورود از طریق حسابهای دیگر: سایتها با استفاده از APIهای OAuth به کاربران اجازه میدهند از طریق حسابهای گوگل، فیسبوک یا دیگر حسابها وارد شوند.
- نقشههای گوگل: سایتها با استفاده از API نقشههای گوگل میتوانند موقعیت مکانی را روی نقشه نمایش دهند.
- ارسال پیامک: سایتها برای ارسال اعلانها یا تأییدیهها از APIهای ارسال پیامک استفاده میکنند.
به طور کلی، APIها تجربه کاربری سایتها را ارتقا میدهند و امکان توسعه و انعطافپذیری بیشتری را برای آنها فراهم میکنند.
کتابخانه Requests
کتابخانه requests یکی از پرکاربردترین کتابخانههای پایتون برای ارسال درخواستهای HTTP است. این کتابخانه کار با پروتکل HTTP را ساده و خواندن دادههای وب را به صورت کاربرپسند انجام میدهد. این کتابخانه برای انجام کارهای مختلفی از جمله دریافت دادهها از APIها، ارسال دادهها به سرورها، مدیریت کوکیها، و کار با پروتکل HTTPS بسیار مفید است.
مزایای کتابخانه requests
- سادگی و خوانایی: این کتابخانه با سینتکس ساده و قابل فهم کار ارسال درخواستهای HTTP را آسان میکند.
- مدیریت خودکار کوکیها: به طور خودکار کوکیها را برای درخواستها مدیریت میکند.
- پشتیبانی از HTTPS: از پروتکل HTTPS پشتیبانی کرده و امنیت درخواستها را تضمین میکند.
- پشتیبانی از دادههای JSON: ارسال و دریافت دادههای JSON با این کتابخانه بسیار ساده است.
- کنترل زمان انتظار و تایم اوت: امکان تنظیم مدت زمان انتظار برای درخواستها و جلوگیری از تاخیرهای طولانی وجود دارد.
- مدیریت هدرهای HTTP: به راحتی میتوانید هدرهای سفارشی به درخواستها اضافه کنید.
نصب کتابخانه Requests
pip install requests
مثال کاربردی اول با requests – خواندن مقدار ارز دیجیتال
در این مثال، از یک API به نام CoinGecko استفاده میکنیم که دادههای مربوط به قیمت ارزهای دیجیتال را ارائه میدهد. در این مثال، قیمت فعلی بیتکوین را دریافت و نمایش میدهیم.
import requests # آدرس API و پارامترهای آن url = "https://api.coingecko.com/api/v3/simple/price" params = { "ids": "bitcoin", # نام ارز دیجیتال "vs_currencies": "usd" # واحد ارزی که قیمت در آن نمایش داده میشود } # ارسال درخواست GET به API response = requests.get(url, params=params) # بررسی وضعیت درخواست if response.status_code == 200: data = response.json() # تبدیل پاسخ به فرمت JSON # استخراج و نمایش قیمت فعلی بیتکوین bitcoin_price = data.get("bitcoin", {}).get("usd") print(f"The current price of Bitcoin is ${bitcoin_price}") else: print("Error:", response.status_code) The current price of Bitcoin is $76503
توضیحات کد
- آدرس API و پارامترها: پارامترها شامل ids (که در اینجا bitcoin برای بیتکوین است) و vs_currencies (واحد ارزی که قیمت در آن نمایش داده میشود، در اینجا دلار usd) هستند.
- ارسال درخواست: درخواست GET به API با پارامترهای مشخص شده ارسال میشود.
- بررسی پاسخ: اگر کد وضعیت پاسخ ۲۰۰ باشد، درخواست موفقیتآمیز بوده و دادههای JSON از پاسخ استخراج میشوند.
- استخراج دادههای JSON: با استفاده از ()response.json، دادهها استخراج و قیمت بیتکوین نمایش داده میشود.
نکته
این API نیازی به کلید API ندارد، بنابراین به راحتی میتوانید آن را آزمایش کنید.
مثال کاربردی دوم با requests – خواندن اطلاعات کشورها
برای مثال دیگری که از requests استفاده کنیم و نیاز به ثبتنام یا توکن نداشته باشد، میتوانیم از API کشورهای جهان (REST Countries API) استفاده کنیم. این API اطلاعاتی درباره کشورهای مختلف، مانند نام، جمعیت، منطقه، و پایتخت آنها را به فرمت JSON برمیگرداند.
در این مثال، اطلاعات مربوط به کشور ژاپن را از این API دریافت کرده و نمایش میدهیم.
کد Python برای واکشی اطلاعات کشورها با REST Countries API
import requests # آدرس API و پارامترهای آن url = "https://restcountries.com/v3.1/name/Iran" # ارسال درخواست GET به API response = requests.get(url) # بررسی وضعیت درخواست if response.status_code == 200: data = response.json() # تبدیل پاسخ به فرمت JSON # استخراج اطلاعات کشور country_info = data[0] # داده کشور اول (ایران) را میگیریم country_name = country_info.get("name", {}).get("common", "N/A") capital = country_info.get("capital", ["N/A"])[0] population = country_info.get("population", "N/A") region = country_info.get("region", "N/A") subregion = country_info.get("subregion", "N/A") # نمایش اطلاعات کشور print(f"Country: {country_name}") print(f"Capital: {capital}") print(f"Population: {population}") print(f"Region: {region}") print(f"Subregion: {subregion}") else: print("Error:", response.status_code) Country: Iran Capital: Tehran Population: 83992953 Region: Asia Subregion: Southern Asia
مثال کاربردی سوم با requests – خواندنAPI هایی که نیاز به توکن دارند.
در این مثال، فرض کنید میخواهیم از یک API دادههای هواشناسی را دریافت کنیم و دمای فعلی یک شهر خاص را نمایش دهیم. در اینجا از API سایت openweathermap.org استفاده میکنیم. این API نیاز به داشتن توکن هست برای دریافت توکن وارد سایت openweathermap شوید و یک ثبت نام ساده انجام دهید توکن برایتان ایمیل می شود و با یک تاخیر حدودا ۱۰ دقیقه ای می توانید از توکن استفاده کنید پس در خط زیر مقدار appid را باید تغییر دهید.
“appid”: “db12f141a4b1952b5e2a3107bdd238d1”, # کلید API که از سایت دریافت کردهاید.
import requests # آدرس API و پارامترهای آن url = "https://api.openweathermap.org/data/2.5/weather" params = { "q": "Tehran", # نام شهر "appid": "db12f141a4b1952b5e2a3107bdd238d1", # کلید API که از سایت دریافت کردهاید "units": "metric" # واحد دما به سلسیوس } # ارسال درخواست GET به API response = requests.get(url, params=params) # بررسی وضعیت درخواست if response.status_code == 200: data = response.json() # تبدیل پاسخ به فرمت JSON # استخراج و نمایش دمای فعلی temperature = data.get("main", {}).get("temp") print(f"The current temperature in Tehran is {temperature}°C") else: print("Error:", response.status_code) The current temperature in Tehran is 15.67°C
توضیحات کد
- آدرس API و پارامترها: پارامترها شامل نام شهر، کلید API و واحد دما هستند.
- ارسال درخواست: درخواست GET به API با پارامترهای مشخص شده ارسال میشود.
- بررسی پاسخ: با استفاده از response.status_code بررسی میشود که آیا درخواست موفقیتآمیز بوده است.
- استخراج دادههای JSON: از متد response.json() برای استخراج دادههای JSON استفاده میشود و دمای فعلی از پاسخ استخراج و چاپ میگردد.
نکته
در صورت استفاده از این API، باید کلید API خود را از سایت مربوطه دریافت کنید و جایگزین YOUR_API_KEY کنید.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.