پروتکل HTTP و کتابخانه Requests در پایتون

پروتکل HTTP و کتابخانه Requests در پایتون

resized_image
آموزش پیشرفته پایتون

پروتکل HTTP و کتابخانه Requests در پایتون

فهرست مطالب
import requests

# ۱. آدرس مقصد (URL)
url = "https://jsonplaceholder.typicode.com/posts"

# ۲. هدرها (Headers)
headers = {
    "User-Agent": "MyPythonApp/1.0",
    "Content-Type": "application/json; charset=UTF-8"
}

# ۳. بدنه ارسالی (Body / Payload)
body_data = {
    "title": "آموزش جامع Requests",
    "body": "در حال یادگیری اجزای ارتباط با وب هستیم.",
    "userId": 1
}

# ۴. متد (Method) -> در اینجا requests.post انتخاب شده است
response = requests.post(
    url=url,
    headers=headers,
    json=body_data,
    timeout=5
)

# ۵. پردازش پاسخ سرور (Response)
print("=== ساختار پاسخ دریافتی (Response) ===")
print("کد وضعیت (Status Code):", response.status_code)
print("نوع محتوای پاسخ (Header):", response.headers.get("Content-Type"))
print("داده‌های برگشتی (Response Body):", response.json())
import requests

# آدرس منبع: گرفتن مشخصات کاربری با شناسه ۱
url = "https://jsonplaceholder.typicode.com/users/1"

response = requests.get(url)

# بررسی موفقیت‌آمیز بودن درخواست
if response.status_code == 200:
    user_info = response.json()
    print(f"نام کاربر: {user_info['name']}")
    print(f"ایمیل: {user_info['email']}")
    print(f"شهر: {user_info['address']['city']}")
else:
    print(f"خطا در دریافت اطلاعات: {response.status_code}")

import requests

url = "https://jsonplaceholder.typicode.com/posts"

# داده‌ای که می‌خواهیم روی سرور ایجاد شود
new_post_payload = {
    "title": "آموزش هوش مصنوعی با پایتون",
    "body": "در این مقاله با ساختارهای یادگیری عمیق آشنا می‌شویم...",
    "userId": 1
}

# ارسال داده در قالب JSON
response = requests.post(url, json=new_post_payload)

# در متد POST کد وضعیت موفقیت معمولاً 201 (Created) است
print(f"کد وضعیت: {response.status_code}")
print("پاسخ سرور (رکورد ساخته‌شده):")
print(response.json())

import requests

# آدرس پست شماره ۱ که قصد بازنویسی کامل آن را داریم
url = "https://jsonplaceholder.typicode.com/posts/1"

# بسته کامل اطلاعات جدید برای جایگزین شدن
updated_post = {
    "id": 1,
    "title": "عنوان جدید جایگزین‌شده",
    "body": "متن کامل مقاله که کاملاً با متن قبلی عوض شده است.",
    "userId": 1
}

response = requests.put(url, json=updated_post)

print(f"کد وضعیت به‌روزرسانی: {response.status_code}")
print("داده‌های جدید ثبت‌شده:")
print(response.json())

import requests

url = "https://jsonplaceholder.typicode.com/posts/1"

# فقط فیلد عنوان (title) را تغییر می‌دهیم، بقیه فیلدها دست‌نخورده باقی می‌مانند
partial_update = {
    "title": "عنوان جدید (فقط این فیلد ویرایش شد)"
}

response = requests.patch(url, json=partial_update)

print(f"کد وضعیت: {response.status_code}")
print("خروجی بعد از ویرایش جزئی:")
print(response.json())

import requests

url = "https://jsonplaceholder.typicode.com/posts/1"

# فقط فیلد عنوان (title) را تغییر می‌دهیم، بقیه فیلدها دست‌نخورده باقی می‌مانند
partial_update = {
    "title": "عنوان جدید (فقط این فیلد ویرایش شد)"
}

response = requests.patch(url, json=partial_update)

print(f"کد وضعیت: {response.status_code}")
print("خروجی بعد از ویرایش جزئی:")
print(response.json())

import requests

url = "https://jsonplaceholder.typicode.com/posts/1"
response = requests.head(url)

print(f"کد وضعیت: {response.status_code}")
print(f"نوع محتوا: {response.headers.get('Content-Type')}")
print(f"حجم تخمینی: {response.headers.get('Content-Length')} بایت")

import requests

url = "https://jsonplaceholder.typicode.com/posts/1"
response = requests.options(url)

# سرور در هدر 'Allow' می‌گوید چه متدهایی قابل استفاده هستند
print(f"متدهای مجاز برای این مسیر: {response.headers.get('Allow')}")

import requests

res = requests.get("https://jsonplaceholder.typicode.com/posts/1")

if res.status_code == 200:
    print("درخواست با موفقیت انجام شد!")
elif res.status_code == 404:
    print("منبع مورد نظر پیدا نشد.")

import requests

res = requests.get("https://jsonplaceholder.typicode.com/posts/1")

# دریافت نوع داده و زمان سرور از هدرها
content_type = res.headers.get("Content-Type")
server_date = res.headers.get("Date")

print(f"نوع محتوا: {content_type}")
print(f"زمان سرور: {server_date}")

import requests

res = requests.get("https://httpbin.org/robots.txt")

# چاپ محتوای متنی پاسخ
print("محتوای فایل robots.txt:")
print(res.text)

import requests

# آدرس یک تصویر نمونه
img_url = "https://httpbin.org/image/png"
res = requests.get(img_url)

if res.status_code == 200:
    # ذخیره فایل به صورت باینری (مفید برای عکس، ویدیو و فایل)
    with open("downloaded_image.png", "wb") as file:
        file.write(res.content)
    print("تصویر با موفقیت دانلود و ذخیره شد.")

{
  "username": "mina_ai",
  "age": 25,
  "skills": ["Python", "Machine Learning", "FastAPI"],
  "is_active": true
}

import requests

res = requests.get("https://jsonplaceholder.typicode.com/users/1")

# تبدیل خودکار پاسخ JSON به دیکشنری پایتون
user_data = res.json()

print("نام کاربر:", user_data["name"])
print("ایمیل:", user_data["email"])

import requests

url = "https://jsonplaceholder.typicode.com/invalid-endpoint"

try:
    res = requests.get(url)
    # اگر کد وضعیت خطا باشد، این متد استثنا (Exception) ایجاد می‌کند
    res.raise_for_status()
    print("پاسخ موفقیت‌آمیز بود.")
except requests.exceptions.HTTPError as err:
    print(f"خطای HTTP رخ داد: {err}")
import requests

# معمولاً دامنه‌ها بدون www به نسخه دارای www ریدایرکت می‌شوند
res = requests.get("https://github.com")

print("آدرس اولیه: https://github.com")
print("آدرس نهایی پس از ریدایرکت:", res.url)
import requests

# شبیه‌سازی درخواست با یک ثانیه تاخیر در سرور
res = requests.get("https://httpbin.org/delay/1")

# محاسبه مدت زمان سپری شده
duration = res.elapsed.total_seconds()
print(f"مدت زمان پاسخ‌دهی سرور: {duration:.2f} ثانیه")
import requests

try:
    # یک آدرس اشتباه عمدی
    response = requests.get("https://api.github.com/address-ke-vojod-nadarad")
    
    # اگر کد خطا باشد، اینجا برنامه متوقف شده و می‌رود داخل except
    response.raise_for_status()
    
    print("درخواست موفق بود!")

except requests.exceptions.HTTPError as err:
    print(f"خطای HTTP رخ داد: {err}")
except Exception as e:
    print(f"یک خطای ناشناخته رخ داد: {e}")

فکر خود را اینجا بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *