مقدمه
در بسیاری از برنامه های وب ، اتصال به خدمات مختلف شخص ثالث با استفاده از API طبیعی است. هنگامی که از این API ها استفاده می کنید ، می توانید به داده هایی مانند اطلاعات آب و هوا ، امتیازات ورزشی ، لیست فیلم ها ، توییت ها ، نتایج موتور جستجو و تصاویر دسترسی پیدا کنید. همچنین می توانید از API ها برای اضافه کردن عملکرد به برنامه خود استفاده کنید. نمونه هایی از این موارد پرداخت ها، برنامه زمانبندی ، ایمیل ها ، ترجمه ها ، نقشه ها و انتقال فایل ها است. اگر قرار بود هرکدام از این موارد را به تنهایی ایجاد کنید ، زمان بسیار زیادی می برد ، اما با وجود API ها ، تنها چند دقیقه طول می کشد تا به یکی متصل شوید و به ویژگی ها و داده های آن دسترسی پیدا کنید.
در این مقاله ، ما در مورد کتابخانه درخواست ها در پایتون آموزش میبینیم، که به شما امکان می دهد درخواست های HTTP را در پایتون ارسال کنید .
و از آنجا که استفاده از API به معنی ارسال درخواست HTTP و دریافت پاسخ است ، درخواست ها به شما امکان می دهد از API ها در پایتون استفاده کنید. ما استفاده از ترجمه زبان API را در اینجا نشان خواهیم داد تا بتوانید نمونه ای از نحوه عملکرد آن را ببینید.
مرور اجمالی بر درخواستهای HTTP
درخواست های HTTP نحوه عملکرد وب هستند. هر بار که به یک صفحه وب میروید ، مرورگر شما چندین درخواست به سرور مجازی صفحه وب ارائه می کند. سپس سرور مجازی با تمام داده های لازم برای ارائه صفحه پاسخ می دهد ، و مرورگر شما در واقع صفحه را ارائه می دهد تا بتوانید آن را مشاهده کنید.
روند کلی این است: یک مشتری (مانند مرورگر یا اسکریپت پایتون با استفاده از درخواست) برخی از داده ها را به URL ارسال می کند ، و سپس سرور مجازی واقع در URL اطلاعات را می خواند ، تصمیم می گیرد که با آن چه کار کند و پاسخی را به مشتری برگرداند. سرانجام ، مشتری می تواند تصمیم بگیرد که با داده های موجود در پاسخ چه کاری انجام دهد.
بخشی از داده هایی که مشتری در یک درخواست ارسال می کند ، روش درخواست است. برخی از روشهای درخواست متداول عبارتند از: GET ، POST و PUT. درخواست های GET معمولاً فقط برای خواندن داده ها بدون ایجاد تغییر در چیزی است ، در حالی که درخواست های POST و PUT معمولاً برای تغییر داده ها روی سرور مجازی است. به عنوان مثال ، Stripe API به شما امکان می دهد تا از درخواست های POST برای ایجاد شارژ جدید استفاده کنید تا کاربر بتواند چیزی را از برنامه شما خریداری کند.
توجه: این مقاله درخواستهای GET را پوشش می دهد ، زیرا ما هیچ گونه داده ای را در سرور مجازی اصلاح نمی کنیم.
هنگام ارسال درخواست از یک اسکریپت پایتون یا داخل یک برنامه وب ، شما ، به عنوان توسعه دهنده ، تصمیم می گیرید که در هر درخواست چه چیزی ارسال می شود و با پاسخ چه کاری انجام دهید. بیایید با ارسال یک درخواست به Scotch.io و سپس با استفاده از یک API ترجمه زبان ، این موضوع را کشف کنیم.
درخواست های پایتون را نصب کنید
قبل از اینکه بتوانیم کاری انجام دهیم ، باید کتابخانه را نصب کنیم. بنابراین بیایید پیش برویم و درخواست ها را با استفاده از pip نصب کنیم. در صورتی که قبلاً یک محیط مجازی نداشته اید ، بهتر است ابتدا آن را ایجاد کنید.
$ pip install requests
اولین درخواست ما
برای شروع ، اجازه دهید از درخواست هایی برای درخواست سایت Scotch.io استفاده کنیم. فایلی بنام script.py ایجاد کنید و کد زیر را به آن اضافه کنید. در این مقاله ، ما کد زیادی برای کار کردن نداریم ، بنابراین وقتی چیزی تغییر کرد ، می توانید به جای اضافه کردن خطوط جدید ، کد موجود را به روز کنید.
script.py
import requests
res = requests.get(‘https://scotch.io’)
print(res)
بنابراین تمام کار این کد ارسال یک درخواست GET به Scotch.io است. این همان نوع درخواستی است که مرورگر شما برای مشاهده این صفحه ارسال می کند ، اما تنها تفاوت این است که درخواست ها نمی توانند HTML را ارائه دهند ، بنابراین در عوض شما فقط HTML خام و سایر اطلاعات پاسخ را دریافت خواهید کرد.
ما در اینجا از تابع .get () استفاده می کنیم ، اما درخواست ها به شما امکان می دهد از سایر عملکردها مانند .post () و .put () برای ارسال آن درخواست ها نیز استفاده کنید.
می توانید با اجرای فایل script.py آن را اجرا کنید.
$ python script.py
و آنچه در عوض دریافت می کنید این است:
کدهای وضعیت
اولین کاری که می توانیم انجام دهیم بررسی کد وضعیت است. کدهای HTTP از 1XX تا 5XX متغیر است. کدهای وضعیت مشترک که احتمالاً دیده اید 200 ، 404 و 500 هستند.
در اینجا یک مرور اجمالی از آنچه که کد وضعیت دارد به شرح زیر است:
⦁ 1XX – اطلاعات
⦁ 2XX – موفقیت
⦁ 3XX – تغییر مسیر
⦁ 4XX – خطای مشتری (شما خطایی انجام دادید)
⦁ 5XX – خطای سرور مجازی (آنها خطایی ایجاد کردند)
به طور کلی ، آنچه که شما هنگام انجام درخواست های خود به دنبال آن هستید ، کد وضعیت در رده 200 تایی ها است.
درخواست ها تشخیص می دهند که کدهای وضعیت 4XX و 5XX خطا هستند ، بنابراین اگر این کدهای وضعیت برگردانده شوند ، موضوع پاسخ از درخواست به False ارزیابی می شود.
با بررسی پاسخ برای واقعیت می توانید تست کنید که آیا یک درخواست با موفقیت پاسخ داده است. مثلا:
script.py
if res:
print(‘Response OK’)
else:
print(‘Response Failed’)
پیام “پاسخ موفق نبود” فقط در صورت بازگشت کد وضعیت 400 یا 500 ظاهر می شود. سعی کنید URL را به چیز بی معنی تغییر دهید تا عدم موفقیت پاسخ را با 404 ببینید.
با افزودن موارد زیر می توانید مستقیماً به کد وضعیت نگاهی بیندازید:
script.py
print(res.status_code)
با این کار کد وضعیت به طور مستقیم به شما نشان داده می شود تا بتوانید شماره را خودتان بررسی کنید.
هدرها
موارد دیگری که می توانید از پاسخ دریافت کنید هدرها هستند. می توانید با استفاده از فرهنگ نامه هدرها در موضوع پاسخ ، به آنها نگاهی بیندازید.
script.py
print(res.headers)
هدرها به همراه درخواست ارسال می شوند و در پاسخ بازگردانده می شوند. هدرها به این دلیل استفاده می شوند تا هم مشتری و هم سرور مجازی بدانند چگونه داده هایی را که در پاسخ / پاسخ ارسال می شوند ، تفسیر کنند.
هدرهای مختلفی را می بینیم که برگردانده می شوند. در بسیاری از مواقع نیازی به استفاده مستقیم از اطلاعات هدر ندارید ، اما در صورت نیاز وجود دارند.
نوع محتوا معمولاً چیزی است که ممکن است به آن احتیاج داشته باشید زیرا فرمت داده ها ، به عنوان مثال HTML ، JSON ، PDF ، متن ، و غیره را نشان میدهد. اما نوع محتوا به طور معمول توسط درخواست ها تعیین میشود تا بتوانید به داده هایی که بازگردانده می شوند دسترسی پیدا کنید.
متن پاسخ
و در آخر اینکه ، اگر به res.text نگاهی بیندازیم (این برای داده های متنی کار می کند ، مانند یک صفحه HTML مانند چیزی که در حال مشاهده هستید) ، می توانیم تمام HTML مورد نیاز برای ساخت صفحه اصلی Scotch را مشاهده کنیم. ارائه نخواهد شد ، اما می بینیم که متعلق به Scotch است. اگر آن را در یک فایل ذخیره کرده اید و آن را باز کنید ، چیزی را مشاهده می کنید که شبیه به سایت Scotch میباشد. در یک وضعیت واقعی ، درخواست های چندگانه برای یک صفحه وب واحد برای بارگیری مواردی مانند تصاویر ، اسکریپت ها و شیت استایل وجود دارد ، بنابراین اگر فقط HTML را در یک فایل ذخیره کنید ، چیزی شبیه به آنچه در صفحه Scotch.io مرورگرتان به نظر می رسد نخواهد بود زیرا فقط یک درخواست واحد برای بدست آوردن داده های HTML انجام شده است.
script.py
print(res.text)
استفاده از API ترجمه
اکنون بیایید به سراغ یک چیز جالب تر برویم. ما از API ترجمه Yandex برای اجرای درخواست ترجمه متن به زبان دیگر استفاده خواهیم کرد.
برای استفاده از API ، ابتدا باید ثبت نام کنید. پس از ورود ، به Translate API بروید و یک کلید API ایجاد کنید. پس از داشتن کلید API ، آن را به صورت ثابت به فایل خود اضافه کنید. در اینجا لینکی وجود دارد که می توانید تمام آن کارها را انجام دهید: https://tech.yandex.com/translate/
script.py
API_KEY = ‘your yandex api key’
دلیل اینکه به یک کلید API احتیاج داریم این است که Yandex بتواند هر بار که بخواهیم از API آنها استفاده کنیم بتواند ما را تأیید کند. کلید API نوعی تأیید اعتبار ساده است ، زیرا هنگام ارسال ، به انتهای URL درخواست اضافه می شود.
برای دانستن اینکه کدام URL را برای استفاده از API باید ارسال کنیم ، می توانیم به مستندات Yandex مراجعه کنیم.
اگر به آنجا بنگریم ، تمام اطلاعات مورد نیاز برای استفاده از Translate API آنها برای ترجمه متن را خواهیم دید.
وقتی URL را با امپرسند (&) ، علامت سؤال (؟) و با علائم مساوی (=) می بینیم ، می توانید مطمئن باشید که URL برای درخواست های GET است. این نمادها پارامترهایی را نشان می دهد که همراه با URL هستند.
به طور معمول موارد موجود در براکت های مربع ([]) اختیاری خواهد بود. در این حالت ، قالب ، گزینه ها و پاسخ به تماس اختیاری هستند ، در حالی که کلید ، متن و زبان برای درخواست لازم میباشند.
بنابراین بیایید کدی را برای ارسال به آن URL اضافه کنیم. می توانید اولین درخواستی را که ایجاد کردیم با این جایگزین کنید:
script.py
url = ‘https://translate.yandex.net/api/v1.5/tr.json/translate’
res = requests.get(url)
دو روش وجود دارد که می توانیم پارامترها را اضافه کنیم. می توانیم مستقیماً آن را به انتهای URL اضافه کنیم ، یا می توانیم از درخواست هایی بخواهیم این کار را برای ما انجام دهند. برای انجام دومی ، می توانیم یک دیکشنری برای پارامترهای خود ایجاد کنیم. سه مورد مورد نیاز ما کلید ، متن و زبان هستند. بیایید فرهنگ نامه را با استفاده از کلید API ، ‘Hello’ برای متن ، و “en-es” به عنوان زبان ایجاد کنیم ، به این معنی که می خواهیم از انگلیسی به اسپانیایی ترجمه کنیم.
اگر نیاز به دانستن کدهای زبانی دیگر دارید ، می توانید در این لینک جستجو کنید. شما به دنبال ستون 639-1 هستید.
ما یک فرهنگ لغت پارامتری را با استفاده از تابع disc () و عبور از کلیدها و مقادیر مورد نظر در فرهنگ لغت خود ایجاد می کنیم.
script.py
params = dict(key=API_KEY, text=’Hello’, lang=’en-es’)
حالا دیکشنری پارامترها را برمیداریم و آن را به تابع .get () منتقل می کنیم.
script.py
res = requests.get(url, params=params)
وقتی از این طریق از پارامترها عبور کردیم ، درخواست ها پیش می روند و پارامترها را به آدرس URL برای ما اضافه می کنند.
اکنون بیایید عبارت چاپی را برای متن پاسخ اضافه کنیم و ببینیم چه چیزی در پاسخ باز می گردد.
script.py
print(res.text)
سه چیز را می بینیم. کد وضعیت را می بینیم که دقیقاً همان کد وضعیت خود پاسخ است ، زبانی را که مشخص کردیم می بینیم و متن ترجمه شده را در داخل لیست مشاهده می کنیم. بنابراین باید متن Hola را برای متن ترجمه شده ببینید.
دوباره به عنوان کد زبان en-fr را امتحان کنید و اکنون باید در پاسخ ‘Bonjour’ را مشاهده کنید.
script.py
params = dict(key=API_KEY, text=’Hello’, lang=’en-fr’)
بیایید نگاهی به عناوین برای این پاسخ خاص بیندازیم.
script.py
print(res.headers)
بدیهی است که هدرها باید متفاوت باشند زیرا ما با یک سرور مجازی دیگر ارتباط برقرار می کنیم ، اما در این حالت نوع محتوا به جای text/html ، application/json است. این بدان معنی است که داده ها را می توان به صورت JSON تفسیر کرد.
هنگامی که application/json نوع محتوای پاسخ است ، می توانیم با استفاده از درخواست ها، پاسخ ها را به یک فرهنگ لغت تبدیل و به گونه ای لیست کنیم که بتوانیم راحت تر به داده دسترسی پیدا کنیم.
برای تجزیه و تحلیل داده ها به عنوان JSON ، از روش .json () در موضوع پاسخ استفاده می کنیم.
اگر آن را چاپ کنید ، خواهید دید که داده ها یکسان به نظر می رسند ، اما قالب کمی متفاوت است.
script.py
json = res.json()
print(json)
دلیل متفاوت بودن آن به این دلیل است که دیگر متن ساده ای که از res.text دریافت میکردید، نیست. این بار نسخه چاپی یک فرهنگ لغت است.
بهتر است بگوییم که می خواهیم به متن دسترسی پیدا کنیم. از آنجا که اکنون یک فرهنگ لغت است ، می توانیم از کلید متن استفاده کنیم.
script.py
print(json[‘text’])
و اکنون فقط داده های مربوط به آن یک کلید را می بینیم. در این حالت ما به دنبال لیست یک مورد هستیم ، بنابراین اگر می خواستیم آن متن را مستقیماً در لیست قرار دهیم ، می توانیم از طریق فهرست به آن دسترسی پیدا کنیم.
script.py
print(json[‘text’][0])
و اکنون تنها چیزی که می بینیم کلمه ترجمه شده است.
بنابراین مطمئناً اگر موارد را در پارامترهای خود تغییر دهیم ، نتایج متفاوتی خواهیم گرفت. بیایید متن را برای ترجمه از Hello به Goodbye تغییر دهیم ، زبان مقصد را به اسپانیایی برگردانیم و درخواست را دوباره ارسال کنیم.
script.py
params = dict(key=API_KEY, text=’Goodbye’, lang=’en-es’)
سعی کنید متن طولانی تر را به زبان های مختلف ترجمه کنید و ببینید چه پاسخی به API می دهد.
موارد خطای Translate API
در آخر ، به یک مورد خطا نگاه خواهیم کرد. همه چیز همیشه کار نمی کند ، بنابراین باید بدانیم چه زمانی این اتفاق می افتد.
با حذف یک کاراکتر ، کلید API خود را تغییر دهید. وقتی این کار را کردید دیگر کلید API شما معتبر نخواهد بود. سپس یک درخواست را ارسال کنید.
اگر به کد وضعیت نگاهی بیندازید ، این چیزی است که بدست می آورید:
script.py
print(res.status_code)
بنابراین وقتی از API استفاده می کنید ، بهتر است بررسی کنید که آیا موارد موفقیت آمیز هستند یا خیر ، بنابراین می توانید با توجه به نیاز برنامه خود ، موارد خطا را برطرف کنید.
نتیجه
این چیزی است که ما آموخته ایم:
• درخواست های HTTP چگونه کار می کند
• کدهای وضعیت مختلف ممکن در یک پاسخ
• نحوه ارسال درخواست و دریافت پاسخ با استفاده از کتابخانه درخواست ها در پایتون
• نحوه استفاده از API translate برای ترجمه متن
• چگونگی تبدیل پاسخ های محتوای application/JSON به فرهنگ لغت
اگر می خواهید کارهای بیشتری انجام دهید ، این لیست را بررسی کنید تا API های مختلف موجود را ببینید و سعی کنید از آنها با درخواست های پایتون استفاده کنید.
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
چگونه می توان هاست های مجازی Apache را در اوبونتو 18.04 – نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04
نصب پشته Nginx، MySQL، PHP LEMP در CentOS 8 – نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7
نحوه نصب پشته یا استک Nginx ، MySQL ، PHP LEMP – بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose
مراحل ایمن سازی Apache HTTP در FreeBSD 12 – بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16
درک Objectهای Map و Set در JavaScript – استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18
نحوه راه اندازی Eclipse Theia Cloud IDE در اوبونتو – چگونه می توان پلتفرم كد سرور Cloud IDE را در اوبونتو 18.04
نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8 – چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی
نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js – نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18
راه اندازی اولیه سرور با CentOS 8 – تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes
نحوه تنظیم کلیدهای SSH در CentOS 8 – نحوه نصب و استفاده از PostgreSQL در CentOS 7
نحوه ساختن یک برنامه Node.js با Docker Quickstart – چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو
چگونه می توان هاست های مجازی Apache را در اوبونتو – مدیریت DNS با استفاده از DNSControl در Debian 10
نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 – چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7
نحوه نصب و استفاده از TimescaleDB در CentOS 7 – نحوه نصب Apache Kafka در Debian 10
نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04– نحوه نصب وردپرس با OpenLiteSpeed در اوبونتو 18.04
استفاده از Cron برای خودکارسازی کارها در اوبونتو 18 –
نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18 –
نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10 –
نحوه نصب Docker Compose در Debian 10 –
چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد –
کلمات کلیدی خرید سرور
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا
https://vpsgol.net/product/vps-germany/
https://vpsgol.net/product/vps-usa/
https://vpsgol.net/product/vps-france/
https://vpsgol.net/product/vps-canada/
https://vpsgol.net/product/vps-poland/
https://vpsgol.net/product/vps-netherlands/
https://vpsgol.net/product/vps-england/