از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش ارسال داده های JSON با استفاده از کتابخانه درخواست ها در پایتون
سرفصلهای مطلب
معرفی
بهعنوان توسعهدهنده، ما اغلب با API یا سرویسهای وب کار میکنیم، و یک کار رایج ارسال دادهها در قالب JSON (نشانگذاری شی جاوا اسکریپت) به سرور است. خوشبختانه پایتون یک ابزار قدرتمند در اختیار ما قرار می دهد requests
کتابخانه، که درخواست های HTTP را سریع می کند، از جمله ارسال داده های JSON.
در این مقاله به روش استفاده از آن می پردازیم
requests
کتابخانه برای ارسال درخواست POST با داده های JSON در پایتون. ما همه چیز را پوشش خواهیم داد، از اصول اولیه ارسال درخواست POST گرفته تا رسیدگی به پاسخ دریافتی از سرور، و حتی رسیدگی به خطاهایی که ممکن است در طول مسیر رخ دهد.
ارسال داده های JSON از طریق درخواست POST
اکنون، میتوانیم به اصل این مقاله بپردازیم – یک درخواست POST با آن ایجاد کنیم requests
کتابخانه در پایتون بیایید با یک مثال ساده شروع کنیم که داده های JSON را در بدنه درخواست ارسال می کند. ما ابتدا نیاز داریم import را requests
کتابخانه، آدرس اینترنتی را که میخواهیم درخواست ارسال کنیم را مشخص کرده و دادههای JSON را در آن تعریف کنیم data
متغیر. ما نیز مشخص می کنیم Content-type
هدر نشان می دهد که ما داده های JSON را ارسال می کنیم:
import requests
url = 'https://jsonplaceholder.typicode.com/posts'
headers = {'Content-type': 'application/json'}
data = '{"title": "foo", "body": "bar", "userId": 1}'
سپس، درخواست POST را با استفاده از requests.post()
روش، ارسال در URL، سرصفحه ها و داده ها:
response = requests.post(url, headers=headers, data=data)
بالاخره ما print کد وضعیت و متن پاسخ برای تأیید موفقیتآمیز بودن درخواست و دریافت پاسخ مورد انتظار:
print(response.status_code)
print(response.text)
توجه داشته باشید: در بخشهای بعدی به پاسخهایی که میتوانیم از یک سرور دریافت کنیم، نگاه دقیقتری خواهیم داشت.
اکنون که یک مثال اساسی را دیدیم، اجازه دهید نگاهی دقیقتر به پارامترهایی که به آن دادهایم بیاندازیم requests.post()
روش:
url
: آدرسی که می خواهیم درخواست را به آن ارسال کنیم.headers
: فرهنگ لغت سرصفحهها برای درج در درخواست. در این مورد، ما را مشخص می کنیمContent-type
هدر نشان می دهد که ما داده های JSON را ارسال می کنیم.data
: داده هایی که باید در متن درخواست ارسال شوند. این می تواند یک رشته یا یک فرهنگ لغت باشد. در مثال ما، یک رشته JSON را ارسال کردیم.
شایان ذکر است که روش دیگری برای ارسال داده های JSON در یک درخواست POST با استفاده از json
پارامتر به جای data
:
import requests
url = 'https://jsonplaceholder.typicode.com/posts'
data = {'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.post(url, json=data)
print(response.status_code)
print(response.text)
این json
پارامتر به طور خودکار تنظیم می کند Content-type
سربرگ به application/json
و داده ها را به صورت JSON در بدنه درخواست رمزگذاری می کند.
توجه داشته باشید: هر دو روش به یک اندازه خوب کار می کنند، بنابراین یکی را انتخاب کنید که مناسب ترین مورد استفاده شما باشد.
و این تقریباً برای ایجاد یک درخواست POST با داده های JSON با استفاده از آن است requests
کتابخانه در پایتون اکنون میتوانیم نگاهی به روش رسیدگی به پاسخ دریافتی از سرور بیندازیم.
رسیدگی به پاسخ
اکنون که یاد گرفتیم چگونه با داده های JSON یک درخواست POST ایجاد کنیم، زمان رسیدگی به پاسخ سرور فرا رسیده است. پاسخ می تواند اطلاعات مهمی در مورد موفقیت درخواست و هر داده ای که برگردانده شده است به ما بدهد.
بیایید مثال بخش قبل را گسترش دهیم تا بتوانیم پاسخ را به درستی انجام دهیم. ابتدا درخواست POST را با استفاده از همان کد قسمت قبل انجام می دهیم. سپس با استفاده از کد وضعیت پاسخ را بررسی می کنیم response.status_code
صفت:
import requests
url = 'https://jsonplaceholder.typicode.com/posts'
headers = {'Content-type': 'application/json'}
data = '{"title": "foo", "body": "bar", "userId": 1}'
response = requests.post(url, headers=headers, data=data)
if response.status_code == requests.codes.ok:
print('Request was successful')
print(response.json())
else:
print('Request failed with status code:', response.status_code)
اگر کد وضعیت است requests.codes.ok
، که است معادل با 200
، ما print یک پیام موفقیت و داده های JSON که توسط سرور با استفاده از response.json()
روش. اگر کد وضعیت است هر چیزی غیر از 200
، ما print یک پیغام خطا و کد وضعیت
توجه داشته باشید: این response.json()
متد داده های JSON را از پاسخ به صورت a برمی گرداند فرهنگ لغت پایتون. این کار کار با داده های کد پایتون را آسان می کند.
مدیریت پاسخ همچنین میتواند شامل بررسی کدها یا هدرهای وضعیت HTTP خاص، تجزیه متن پاسخ یا کار با محتوای پاسخ باشد. این
requests
کتابخانه روشها و ویژگیهای مختلفی را فراهم میکند تا رسیدگی به پاسخ یک درخواست را آسان کند.
رسیدگی به خطاها
هنگام کار با درخواستهای HTTP، رسیدگی به خطاهایی که ممکن است در طول این درخواست رخ دهد مهم است process. در این بخش، روش رسیدگی به خطاهای رایجی را که ممکن است هنگام درخواستهای POST که تاکنون در مورد آن صحبت کردهایم، با آنها برخورد کنیم، توضیح خواهیم داد. بیایید با یک مثال ساده شروع کنیم که روش بررسی خطاها در پاسخ را نشان می دهد:
import requests
url = 'https://jsonplaceholder.typicode.com/posts'
headers = {'Content-type': 'application/json'}
data = '{"title": "foo", "body": "bar", "userId": 1}'
response = requests.post(url, headers=headers, data=data)
if response.status_code != requests.codes.ok:
raise Exception('Request failed with status code:', response.status_code)
ما درخواست POST را با استفاده از همان کد قسمت های قبل انجام دادیم. سپس با استفاده از کد وضعیت پاسخ را بررسی کردیم response.status_code
صفت.
اگر کد وضعیت نیست 200
، ما یک استثنا مطرح کنید با یک پیام خطا و کد وضعیت. این تضمین میکند که در صورت بروز خطا، به جای ادامه دادن با دادههای بالقوه نامعتبر، اجرای برنامه متوقف میشود.
سایر خطاهای رایجی که ممکن است هنگام درخواست POST با داده های JSON رخ دهد عبارتند از:
ConnectionError
: هنگامی که اتصال به سرور برقرار نمی شود افزایش می یابد.Timeout
: زمانی که زمان درخواست به پایان می رسد مطرح می شود.JSONDecodeError
: زمانی مطرح می شود که پاسخ را نمی توان به صورت JSON رمزگشایی کرد.
بیایید نگاهی به مثالی بیندازیم که روش رسیدگی به همه این خطاها را نشان می دهد:
import requests
url = 'https://jsonplaceholder.typicode.com/posts'
headers = {'Content-type': 'application/json'}
data = '{"title": "foo", "body": "bar", "userId": 1}'
try:
response = requests.post(url, headers=headers, data=data, timeout=5)
response.raise_for_status()
json_data = response.json()
except requests.exceptions.ConnectionError as ce:
print('Connection error:', ce)
except requests.exceptions.Timeout as te:
print('Request timed out:', te)
except requests.exceptions.HTTPError as he:
print('HTTP error occurred:', he)
except ValueError as ve:
print('JSON decoding error:', ve)
else:
print('Request was successful')
print(json_data)
توجه داشته باشید: در اینجا، ما درخواست POST را در یک پیچیدیم try-except
مسدود کردن به منظور گرفتن انواع مختلف استثناهایی که ممکن است رخ دهد.
این response.raise_for_status()
اگر کد وضعیت خطایی را نشان دهد، از روش برای ایجاد یک استثنا استفاده می شود (مثلا 404
). اگر درخواست موفقیت آمیز باشد، ما print یک پیام موفقیت آمیز و داده های JSON که توسط سرور با استفاده از response.json()
روش.
با مدیریت خطاهایی که ممکن است هنگام درخواست POST با داده های JSON رخ دهد، می توانیم کد قوی و قابل اعتمادی بنویسیم که سناریوهای مختلف را مدیریت می کند.
نتیجه
در این مقاله نگاهی به روش استفاده از آن انداختیم requests
کتابخانه ای برای ایجاد یک درخواست POST با داده های JSON در پایتون. ما اصول اولیه ایجاد یک درخواست POST، رسیدگی به پاسخ دریافتی از سرور، و رسیدگی به خطاهایی را که ممکن است در طول زمان رخ دهد، پوشش دادیم. process.
دیدیم که requests
کتابخانه یک API ساده و شهودی برای ایجاد درخواستهای HTTP فراهم میکند و ارسال دادههای JSON در یک درخواست POST ساده و با استفاده از data
یا json
پارامتر. همچنین یاد گرفتیم که چگونه پاسخ سرور را کنترل کنیم، از جمله بررسی کد وضعیت و استخراج دادههای JSON برگشتی.
در نهایت پوشش دادیم رسیدگی به خطا و روش رسیدگی به خطاهای رایجی که ممکن است هنگام درخواست POST با داده های JSON رخ دهد را نشان داد.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-01 04:55:05