جمعه ۰۷ اردیبهشت ۰۳

چگونه مي توان با كتابخانه (library) درخواست ها در پايتون شروع به كار كرد

۸ بازديد

مقدمه
در بسياري از برنامه هاي وب ، اتصال به خدمات مختلف شخص ثالث با استفاده از 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

نحوه نصب و استفاده از TimescaleDB در CentOS 7

نحوه تاييد صحت رمز عبور با Apache در اوبونتو 18.04 (شروع سريع)

نحوه راه اندازي Eclipse Theia Cloud IDE Platform در Debian 10

نحوه نصب و استفاده ازRadamsa براي فوز كردن برنامه ها (تكنيك تست خودكار نرم افزار) و خدمات شبكه روي Ubuntu 18.04

نحوه نصب Docker Compose در Debian 10

چگونه مي توان با كتابخانه (library) درخواست ها در پايتون شروع به كار كرد

نحوه اجراي صفحه گذاري در MySQL با PHP روي اوبونتو 18.04

نحوه تنظيم پلتفرم Eclipse Theia Cloud IDE در CentOS 7

بسته بندي برنامه Laravel 6 براي توسعه با Docker Compose در اوبونتو 18.04

نحوه بهينه سازي درخواست هاي MySQL با ذخيره سازي ProxySQL در اوبونتو 16.04

نحوه استفاده از Ansible براي نصب و راه اندازي وردپرس با LAMP در اوبونتو 18.04

چگونه مي توان پلتفرم كد سرور Cloud IDE را در اوبونتو 18.04 تنظيم كرد (شروع سريع)

چگونه مي توان از رول هاي ansible براي انتزاع محيط زيرساختي خود استفاده كرد

نحوه پيكربندي يك خوشه Galera با MySQL در سرورهاي اوبونتو 18.04

نحوه تهيه نسخه پشتيبان و بازيابي يك خوشه Kubernetes در vpsgol با استفاده از Velero

نحوه نصب و استفاده از PostgreSQL در CentOS 7

چگونه مي توان پلتفرم Eclipse Theia Cloud IDE را روي اوبونتو 18.4 تنظيم كرد

نحوه استقرار و مديريت DNS با استفاده از DNSControl در Debian 10

چگونه مي توان پلتفرم Cloud IDE كد سرور را روي CentOS 7 تنظيم كرد

 

كلمات كليدي خريد سرور

خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي هلند – خريد وي پي اس – خريد vps هلند – خريد vps فرانسه

تا كنون نظري ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در مونوبلاگ ثبت نام کرده اید می توانید ابتدا وارد شوید.