مقدمه
در بسیاری از وباپلیکیشنها، اتصال به سرویسهای مختلف شخص ثالث (Third-Party Services) از طریق API کاملاً رایج است. با استفاده از این APIها میتوانید به دادههایی مثل:
-
اطلاعات آبوهوا
-
نتایج مسابقات ورزشی
-
لیست فیلمها
-
توییتها
-
نتایج موتور جستجو
-
تصاویر
دسترسی پیدا کنید.
همچنین میتوانید از APIها برای افزودن قابلیتهایی مثل:
-
پرداختها
-
زمانبندی
-
ایمیل
-
ترجمه
-
نقشه
-
انتقال فایل
به اپلیکیشن خود استفاده کنید.
اگر بخواهید هرکدام از اینها را خودتان از ابتدا بسازید، زمان بسیار زیادی لازم است؛ اما با APIها میتوانید در عرض چند دقیقه به آنها متصل شوید و از امکاناتشان استفاده کنید.
در این مقاله با کتابخانه Python Requests آشنا میشویم که به شما اجازه میدهد در پایتون HTTP Request ارسال کنید.
از آنجا که استفاده از API یعنی ارسال درخواست HTTP و دریافت پاسخ، کتابخانه Requests به شما امکان استفاده از APIها را در پایتون میدهد.
در این آموزش، برای نمونه از یک API ترجمه زبان استفاده میکنیم تا نحوه کار را ببینید.
مرور سریع HTTP Request
درخواستهای HTTP اساس کار وب هستند.
هر بار که وارد یک صفحه وب میشوید، مرورگر شما چندین درخواست به سرور آن سایت ارسال میکند. سپس سرور تمام دادههای لازم برای نمایش صفحه را برمیگرداند و مرورگر آن را رندر میکند.
فرآیند کلی به این صورت است:
-
یک Client (مثل مرورگر یا اسکریپت پایتون) دادهای به یک URL ارسال میکند.
-
سرور داده را میخواند.
-
تصمیم میگیرد چه کاری انجام دهد.
-
یک پاسخ (Response) برمیگرداند.
-
کلاینت تصمیم میگیرد با پاسخ چه کند.
متدهای درخواست (Request Methods)
بخشی از دادهای که کلاینت ارسال میکند، متد درخواست است.
چند متد رایج:
-
GET → خواندن داده بدون تغییر
-
POST → ایجاد داده
-
PUT → تغییر داده
مثلاً API سرویس Stripe از POST برای ایجاد پرداخت جدید استفاده میکند.
توجه: در این مقاله فقط روی درخواستهای GET تمرکز داریم چون دادهای را تغییر نمیدهیم.
نصب Python Requests
قبل از شروع باید کتابخانه را نصب کنیم:
بهتر است ابتدا یک virtual environment بسازید.
اولین درخواست ما
بیایید با Requests سایت Scotch.io را درخواست کنیم.
فایل script.py بسازید:
import requests
res = requests.get(‘https://scotch.io’)
print(res)
این کد فقط یک درخواست GET ارسال میکند.
تفاوت با مرورگر:
-
مرورگر HTML را رندر میکند
-
Requests فقط HTML خام و اطلاعات پاسخ را میدهد
میتوانید اجرا کنید:
Status Code ها
اولین چیزی که میتوان بررسی کرد status code است.
کدهای HTTP از 1XX تا 5XX هستند.
معنی کلی:
-
1XX → اطلاعات
-
2XX → موفقیت
-
3XX → ریدایرکت
-
4XX → خطای کاربر
-
5XX → خطای سرور
معمولاً باید دنبال کدهای 200 باشید.
Requests اگر کد 4XX یا 5XX بگیرد، پاسخ را False در نظر میگیرد.
مثال:
print(‘Response OK’)
else:
print(‘Response Failed’)
دیدن مستقیم status code
Headers
میتوانید headerهای پاسخ را ببینید:
Headerها همراه درخواست ارسال و همراه پاسخ برمیگردند.
آنها مشخص میکنند داده چگونه تفسیر شود.
مهمترینشان معمولاً:
Content-Type
مثلاً:
-
HTML
-
JSON
-
PDF
-
Text
متن پاسخ (Response Text)
اگر بنویسید:
تمام HTML صفحه را میبینید.
این HTML رندر نمیشود، فقط متن خام است.
استفاده از API ترجمه
حالا برویم سراغ مثال واقعیتر.
از Yandex Translate API استفاده میکنیم.
ابتدا ثبتنام کنید و API Key بگیرید.
API Key برای احراز هویت استفاده میشود.
ارسال درخواست به API
res = requests.get(url)
اضافه کردن پارامترها
بهتر است پارامترها را دیکشنری بدهیم:
ارسال:
Requests خودش پارامترها را به URL اضافه میکند.
دیدن پاسخ
در پاسخ میبینید:
-
status code
-
زبان
-
متن ترجمهشده
مثلاً:
Hola
اگر بگذارید:
پاسخ:
Bonjour
دیدن headerهای این پاسخ
این بار Content-Type برابر است با:
یعنی داده JSON است.
تبدیل پاسخ JSON به دیکشنری
print(json)
دسترسی به متن ترجمه
یا مستقیم:
تغییر متن ترجمه
پاسخ:
Adios
مدیریت خطاهای API
اگر API key را خراب کنید:
کد:
403
پس باید همیشه موفق بودن درخواست را بررسی کنید.
نتیجهگیری
در این مقاله یاد گرفتیم:
-
HTTP request چگونه کار میکند
-
انواع status code چیست
-
چگونه با Python Requests درخواست بفرستیم
-
چگونه از API ترجمه استفاده کنیم
-
چگونه پاسخ JSON را به دیکشنری تبدیل کنیم
از همراهی شما با پارمین کلود سپاسگزاریم.
نظرات کاربران