در دنیای وب، request دستورالعمل یا پیامی است که client برای دریافت اطلاعات یا انجام عملی به سرور ارسال می کند.
هنگامی که یک صفحه وب یا برنامه ای را در رایانه یا تلفن هوشمند خود باز می کنید، دستگاه شما request را به سروری که صفحه وب یا برنامه را میزبانی می کند ارسال می کند. request معمولاً شامل اطلاعاتی در مورد آنچه client درخواست می کند، مانند یک صفحه خاص، یک تصویر یا داده از یک پایگاه داده است.
سپس سرور درخواست را پردازش کرده و پاسخی را به client ارسال می کند. پاسخ می تواند شامل اطلاعات درخواستی یا پیام خطا در صورت عدم انجام درخواست باشد.
درخواستها و پاسخها بلوکهای ساختمانی اصلی ارتباطات وب هستند و برای عملکرد وبسایتها، برنامههای کاربردی وب و سایر خدمات آنلاین ضروری هستند.
مفهوم درخواست و دریافت داده از طریق اینترنت از روزهای اولیه شبکه های کامپیوتری وجود داشته است. با این حال، اولین پروتکل پرکاربرد برای درخواست ها و پاسخ های وب، پروتکل انتقال ابرمتن (HTTP)، در سال 1989 توسط تیم برنرز لی، دانشمند کامپیوتر در سرن (سازمان اروپایی تحقیقات هسته ای) اختراع شد.
پروتکل HTTP در ابتدا برای تسهیل انتقال صفحات وب استاتیک طراحی شد، اما از آن زمان برای پشتیبانی از محتوای وب پویا، رسانه های جریانی و سایر ویژگی های پیشرفته تکامل یافته است.
با گذشت زمان، بسیاری از پروتکل ها و فن آوری های دیگر برای تکمیل HTTP و فعال کردن برنامه های کاربردی وب پیچیده تر مانند JavaScript، XML، REST و WebSocket توسعه یافته اند. تکامل فناوری های وب امکان توسعه برنامه های کاربردی وب قدرتمند و تعاملی را فراهم کرده است که بسیاری از جنبه های زندگی روزمره ما را متحول کرده است.
ابزارهای مختلفی وجود دارد که می توانید از آنها برای درخواست در دنیای وب استفاده کنید. در اینجا چند ابزار رایج وجود دارد:
مرورگرهای وب: مرورگرهای وب مانند گوگل کروم، فایرفاکس و سافاری به شما این امکان را می دهند که با تایپ یک URL در نوار آدرس یا کلیک بر روی یک لینک، درخواست خود را ارسال کنید. مرورگر درخواستی را به سرور ارسال می کند، سپس سرور اطلاعات درخواستی را که در مرورگر نمایش داده می شود، پس می فرستد.
ابزار cURL یک ابزار خط فرمان است که به شما امکان می دهد با استفاده از پروتکل های مختلف از جمله HTTP، FTP، SMTP و غیره، درخواست هایی را به سرورها ارسال کنید. از cURL می توان برای تست API ها، دانلود فایل ها و انجام سایر وظایف مرتبط با وب استفاده کرد.
ابزار Postman یک ابزار محبوب توسعه API است که به شما امکان می دهد درخواست های HTTP از جمله GET، POST، PUT، DELETE و غیره را ایجاد و تست کنید. با Postman میتوانید دادههای پاسخ را مشاهده کنید، header ها را تنظیم کنید و کارهای پیشرفته دیگر را انجام دهید.
ابزار Insomnia یکی دیگر از ابزارهای توسعه API است که به شما امکان می دهد درخواست های HTTP را ارسال کنید و پاسخ ها را در زمان واقعی مشاهده کنید. Insomnia از روش ها، محیط ها و پلاگین های مختلف احراز هویت برای سفارشی کردن کار شما پشتیبانی می کند.
اینها تنها چند نمونه از ابزارهای موجود برای درخواست در دنیای وب هستند. بسته به نیاز شما، ممکن است ابزارهای دیگری وجود داشته باشند که برای مورد استفاده خاص شما مناسب تر باشند.
در اینجا مثالی از نحوه استفاده از cURL برای درخواست HTTP GET برای بازیابی اطلاعات از یک وب سایت آورده شده است:
curl https://www.example.com
این دستور یک درخواست HTTP GET را به آدرس https://www.example.com ارسال می کند و پاسخ سرور را در ترمینال نمایش می دهد.
همچنین میتوانید گزینههای دیگری را برای سفارشیسازی درخواست به دستور cURL اضافه کنید. به عنوان مثال، می توانید از گزینه -H برای اضافه کردن هدر به درخواست استفاده کنید:
curl -H "Accept: application/json" https://api.example.com/data
در این مثال، گزینه -H هدر Accept را روی "application/json" تنظیم می کند، که نشان می دهد client انتظار دارد داده های با فرمت JSON را در پاسخ دریافت کند. URL https://api.example.com/data نقطه endpoint یک API است که داده های JSON را برمی گرداند.
ابزار cURL یک ابزار قدرتمند با گزینه ها و ویژگی های بسیار است. برای اطلاعات بیشتر و نمونه هایی از نحوه استفاده از آن برای ایجاد انواع درخواست ها می توانید به مستندات cURL مراجعه کنید.
کتابخانه Requests یک کتابخانه محبوب پایتون برای ایجاد درخواست های HTTP است. با ارائه یک API کاربرپسند که بسیاری از جزئیات سطح پایین کار با HTTP را حذف می کند، فرآیند ایجاد درخواست های HTTP و مدیریت داده های پاسخ را ساده می کند.
با Requests می توانید انواع مختلفی از درخواست ها از جمله GET، POST، PUT، DELETE و غیره را ایجاد کنید و به راحتی داده های پاسخ را در قالب های مختلف مانند JSON، XML و متن مدیریت کنید.
کتابخانه Requests برای انواع وظایف مربوط به ایجاد درخواست های HTTP در پایتون مفید است. در اینجا چند مورد استفاده رایج وجود دارد که در آن درخواست ها می توانند مفید باشند:
وب اسکرپینگ: از Requests میتوان برای دریافت محتوای HTML از وبسایتها استفاده کرد، که سپس میتوان آنها را با استفاده از کتابخانههای دیگر Python مانند Beautiful Soup یا Scrapy تجزیه و تحلیل کرد.
توسعه API: از درخواستها میتوان برای ایجاد و تست درخواستهای HTTP به APIهای وب استفاده کرد، که توسعه و دیباگ کلاینتهای API را آسانتر میکند.
استخراج داده ها: از درخواست ها می توان برای دریافت داده ها از API های وب یا سایر سرویس های وب استفاده کرد و آن را به قالبی تبدیل کرد که برای برنامه شما مفیدتر است.
تست: از درخواستها میتوان برای خودکارسازی آزمایشهای برنامههای وب با شبیهسازی تعاملات کاربر و تأیید پاسخها استفاده کرد.
دیباگ: از درخواست ها می توان با بررسی header ها و محتوای درخواست ها و پاسخ ها برای دیباگ کردن برنامه های وب استفاده کرد.
برای ایجاد یک محیط مجازی (venv) در پایتون، می توانید مراحل زیر را دنبال کنید:
یک خط فرمان یا پنجره ترمینال را باز کنید.
به دایرکتوری که می خواهید محیط مجازی را در آن ایجاد کنید بروید.
برای ایجاد یک محیط مجازی جدید دستور زیر را اجرا کنید:
در ویندوز:
python -m venv myvenv
در Linux/MacOS:
python3 -m venv myenv
در اینجا myenv نام محیط مجازی شماست. شما می توانید از هر نامی که دوست دارید استفاده کنید.
منتظر بمانید تا محیط مجازی ایجاد شود. این ممکن است چند لحظه طول بکشد.
پس از ایجاد محیط مجازی، می توانید با اجرای دستور زیر آن را فعال کنید:
در ویندوز:
myenv\Scripts\activate
در Linux/MacOS:
source myenv/bin/activate
پس از فعال سازی محیط مجازی، می توانید هر پکیج ای را که نیاز دارید با استفاده از pip نصب کنید، بدون اینکه روی پکیج های نصب شده به صورت کلی بر روی سیستم خود تاثیری داشته باشید. پس از اتمام کار با محیط مجازی، می توانید با اجرای دستور deactivate، آن را غیرفعال کنید.
برای نصب requests و BeautifulSoup در محیط مجازی خود دستور زیر را برای نصب requests و BeautifulSoup با استفاده از pip اجرا کنید:
pip install requests beautifulsoup4
با این کار هر دو پکیج و وابستگی های آنها در محیط مجازی شما دانلود و نصب می شود.
اکنون یک فایل main.py ایجاد کنید و یک برنامه ساده مینویسیم که وب سایت ها را scrape می کند.
یک اسکریپت پایتون نوشتیم که محتوای یک وب سایت را اسکرپ می کند و آن را در یک فایل ذخیره می کند. در ادامه نحوه کار این کد گام به گام آورده شده است:
اگر نام فایل None باشد، اسکریپت حلقهای را وارد میکند که از کاربر میخواهد نام فایل را برای ذخیره محتوا وارد کند. اگر کاربر یک نام فایل معتبر وارد کند، اسکریپت تابع write_content_to_file() را برای ذخیره محتوا در فایل فراخوانی می کند و از حلقه خارج می شود. اگر کاربر یک رشته خالی را وارد کند، اسکریپت از کاربر می خواهد که نام فایل را دوباره وارد کند. اگر کاربر 'q' یا 'Q' را وارد کند، اسکریپت از حلقه خارج می شود و اسکریپت به پایان می رسد.
بیاید این اسکریپت رو تست کنیم: