Table of Contents
مرور کلی کارکرد وب
در این بخش میخواهیم از زاویهٔ یک «برنامهنویس پایتون وب» ببینیم اینترنت و وب چطور کار میکنند؛ بهقدری که وقتی بعداً با Flask کار میکنید، بدانید پشت صحنه چه اتفاقی میافتد. وارد جزئیات خیلی فنی نمیشویم، فقط تصویر کلی را میسازیم.
۱. فرق «اینترنت» و «وب»
- اینترنت: شبکهٔ بسیار بزرگی از کامپیوترها و دستگاهها که به هم وصل هستند.
- وب (World Wide Web): یکی از سرویسهایی که روی اینترنت کار میکند؛ همان سایتها، صفحات HTML، وباپلیکیشنها و…
پس:
- ایمیل، پیامرسانها، تماس صوتی اینترنتی و… همگی روی اینترنتاند، ولی «وب» نیستند.
- وقتی با پایتون سایت میسازید، در واقع برنامهای مینویسید که روی وب اجرا میشود، و برای ارتباط از زیرساخت اینترنت استفاده میکند.
۲. نقش مرورگر و سرور
برای دیدن یک سایت، دو بازیگر اصلی داریم:
- مرورگر (Browser)
مثل Chrome، Firefox، Edge، Safari - روی کامپیوتر یا موبایل شما اجرا میشود.
- درخواست (Request) به سرور میفرستد.
- پاسخ (Response) سرور را دریافت کرده و آن را نمایش میدهد.
- سرور (Server)
- یک کامپیوتر (معمولاً در دیتاسنتر) که همیشه روشن است.
- یک برنامهٔ سرور وب روی آن اجرا میشود (مثلاً Nginx، Apache، یا برنامهٔ Flask شما).
- درخواستها را میگیرد و پاسخ مناسب را برمیگرداند.
به این مدل میگویند مدل «کلاینت–سرور»:
- کلاینت (Client) = مرورگرِ کاربر
- سرور (Server) = کامپیوتری که برنامهٔ وب روی آن اجرا میشود
۳. آدرسهای وب: URL و دامنه
وقتی در مرورگر چیزی مثل این را مینویسید:
https://example.com/page?lang=fa
این یک URL است (Uniform Resource Locator)؛ یعنی «نشانی یک منبع در وب».
اجزای مهم URL:
- پروتکل:
httpیاhttps httpsنسخهٔ امنتر است.- نام دامنه (Domain):
example.com - نامی انسانفهم برای یک سرور
- در پشت صحنه، توسط سیستم DNS به یک آدرس عددی (IP) تبدیل میشود.
- مسیر (Path):
/page - نشان میدهد کدام بخش از سایت را میخواهید.
- پرسوجوی (Query String):
?lang=fa - پارامترهای اضافی که همراه درخواست فرستاده میشود، مثل
page=2،search=pythonو…
در Flask و دیگر فریمورکهای وب، شما معمولاً مسیرها (Routeها) را تعریف میکنید؛ مثلاً:
//about/user/<name>
تا مشخص کنید هر آدرس چه پاسخی برگرداند.
۴. HTTP چیست؟
مرورگر و سرور با یک «زبان مشترک» با هم صحبت میکنند که نامش HTTP است:
HTTP = HyperText Transfer Protocol
- پروتکلی که تعیین میکند:
- مرورگر چگونه درخواست بفرستد
- سرور چگونه پاسخ بدهد
- وقتی Flask مینویسید، در حقیقت دارید برنامهای مینویسید که به درخواستهای HTTP پاسخ میدهد.
HTTP بر پایهٔ مفهوم سادهای کار میکند:
کلاینت درخواست میفرستد → سرور پاسخ میدهد
۵. درخواست HTTP (Request) چیست؟
وقتی وارد یک سایت میشوید، مرورگر یک HTTP Request میفرستد.
چیزهای مهم در یک درخواست:
- متد (Method)
رایجترین متدها: GET: گرفتن اطلاعات (مثلاً نمایش یک صفحه)POST: فرستادن اطلاعات (مثلاً فرم ثبتنام)
متدهای دیگر (مثلPUT,DELETEو…) را فعلاً فقط بهصورت اسمی بدانید.- آدرس (Path)
مثلاً/,/login,/search - هدرها (Headers)
اطلاعات جانبی، مثل: - مرورگر چیست
- زبان ترجیحی کاربر
- نوع دادهای که میپذیرد
- بدنه (Body)
- در
GETمعمولاً خالی است. - در
POSTمعمولاً دادهٔ فرمها، JSON و… در بدنه قرار میگیرد.
در Flask، شما این اطلاعات را از شیء request میگیرید (این را در فصل Flask بهصورت عملی میبینید).
۶. پاسخ HTTP (Response) چیست؟
سرور بعد از دریافت درخواست، یک HTTP Response برمیگرداند.
چیزهای مهم در یک پاسخ:
- کد وضعیت (Status Code)
عددی که میگوید نتیجهٔ درخواست چه بوده. مثلاً: 200 OK→ همهچیز خوب است، صفحه را بگیر.404 Not Found→ صفحه/منبع پیدا نشد.500 Internal Server Error→ مشکلی در سرور رخ داده.- هدرها (Headers)
اطلاعاتی مثل: - نوع محتوا (
text/html,application/json,image/png, …) - طول محتوا
- تنظیمات کش (Cache) و…
- بدنه (Body)
خودِ محتوا، مثلاً: - کد HTML صفحه
- یک تصویر
- دادهٔ JSON
- یا حتی یک فایل PDF
وقتی یک صفحهٔ وب میسازید، کارتان عمدتاً تولید همین بدنه (و گاهی هدرها) است.
۷. چرخهٔ سادهٔ یک درخواست وب
وقتی آدرس یک سایت را مینویسید و Enter میزنید، بهطور خلاصه اتفاقهای زیر میافتد:
- مرورگر شما URL را بررسی میکند.
- دامنه (مثلاً
example.com) به یک آدرس IP تبدیل میشود (کارِ DNS). - مرورگر با آن IP ارتباط برقرار میکند و یک درخواست HTTP میفرستد.
- این درخواست به سرور وب میرسد:
- سرور وب (یا برنامهٔ Flask) تصمیم میگیرد چه پاسخی بدهد.
- برنامه (مثلاً Flask) یک پاسخ HTTP تولید میکند:
- کد وضعیت
- هدرها
- بدنه (مثلاً HTML)
- مرورگر پاسخ را میگیرد:
- HTML را تحلیل (Parse) میکند
- اگر در HTML اشاره به CSS، JavaScript یا تصاویر باشد، برای هرکدام درخواستهای جدید میفرستد.
- مرورگر نتیجه را بهصورت تصویری به کاربر نمایش میدهد.
در فصل Flask، شما در قدم ۴ و ۵ نقش دارید: یعنی برنامهٔ پایتون شما تعیین میکند چه پاسخی برگردد.
۸. صفحات استاتیک و دینامیک
وبسایتها به دو شکل کلی محتوا تولید میکنند:
۸.۱. صفحات استاتیک (Static)
- محتوا از قبل ثابت است و برای همهٔ کاربران یکی است.
- مثل یک فایل HTML ساده روی سرور.
- هر بار که کاربر درخواست میدهد، همان فایل ارسال میشود.
مثال:
یک صفحهٔ معرفی شرکت که همیشه یک متن ثابت دارد.
۸.۲. صفحات دینامیک (Dynamic)
- محتوا در لحظه، توسط برنامهٔ سرور تولید میشود.
- میتواند بسته به کاربر، زمان، دادههای پایگاه داده و… متفاوت باشد.
مثالها:
- صفحهٔ پروفایل هر کاربر در یک شبکهٔ اجتماعی
- نتایج جستوجو
- سبد خرید یک فروشگاه اینترنتی
پایتون (با Flask، Django و…) بیشتر برای ساخت صفحات دینامیک استفاده میشود.
۹. فرانتاند و بکاند (نمای کلی)
در توسعهٔ وب معمولاً دو بخش را از هم جدا میکنند:
- فرانتاند (Front-end)
- چیزی که کاربر در مرورگر میبیند و با آن کار میکند.
- فناوریها:
- HTML → ساختار صفحه
- CSS → ظاهر (رنگها، فونت، چیدمان و…)
- JavaScript → رفتار تعاملی در سمت مرورگر
- بکاند (Back-end)
- کدی که روی سرور اجرا میشود.
- مسئول:
- گرفتن درخواست
- پردازش دادهها
- کار با پایگاه داده
- برگرداندن پاسخ (مثلاً HTML یا JSON)
- اینجا جایی است که شما از پایتون (و Flask) استفاده میکنید.
در این دوره تمرکز اصلی روی بکاند با پایتون است، و فقط تا حد لازم با مفاهیم فرانتاند آشنا میشوید.
۱۰. API و JSON (در حد آشنایی)
علاوه بر صفحات HTML، سرورها میتوانند بهجای صفحه، دادهٔ خام برگردانند تا برنامههای دیگر از آن استفاده کنند. به این سبک میگویند:
- وبسرویس یا API (Application Programming Interface)
رایجترین قالب داده برای این کار JSON است (شبیه دیکشنری پایتون):
مثال از یک پاسخ JSON:
{
"name": "Ali",
"age": 25,
"is_student": true
}بعداً در بخش «API های بسیار ساده» میبینید که چطور میتوانید با Flask یک API کوچک بنویسید که به مرورگر (یا برنامههای دیگر) JSON برگرداند.
۱۱. وب امنتر: HTTPS (در حد معرفی)
وقتی در نوار آدرس مرورگر، کنار سایت یک علامت قفل میبینید، یعنی سایت از HTTPS استفاده میکند.
HTTP→ بدون رمزنگاریHTTPS→ همان پروتکل است، اما با رمزنگاری:- دادهها بین مرورگر و سرور رمزگذاری میشوند.
- شنود کردن یا دستکاری مستقیم دادهها سختتر میشود.
برای یادگیری Flask، لازم نیست وارد جزئیات فنی HTTPS شوید، اما باید بدانید:
- در دنیای واقعی، سایتهای جدی تقریباً همیشه از
https://استفاده میکنند. - وقتی برنامهٔ شما روی یک سرور واقعی قرار بگیرد، معمولاً همراه با یک گواهی SSL/TLS راهاندازی میشود تا از HTTPS بهره ببرد.
۱۲. ارتباط این مفاهیم با Flask
در فصلهای بعد، وقتی با Flask کار میکنید:
- با تعریف «مسیر» (
route) در Flask مشخص میکنید: - کدام URL (مثلاً
/,/about,/user/<name>)
چه پاسخی بدهد. - کدی که مینویسید در نقش بکاند سرور است:
- درخواست HTTP را میگیرد
- پردازش میکند
- پاسخ مناسب (HTML، JSON و…) را برمیگرداند.
- میتوانید هم:
- صفحات HTML (برای مرورگر انسانها)
- و هم JSON (برای برنامهها و APIها) بسازید.
با درک این نمای کلی، وقتی اولین وبسرور سادهٔ خود را با Flask میسازید، دقیقاً میدانید آن چند خط کد در کجای این زنجیره قرار میگیرند و چه نقشی دارند.