Kahibaro
Discord Login Register

وب چگونه کار می‌کند؟ (نمای کلی)

مرور کلی کارکرد وب

در این بخش می‌خواهیم از زاویهٔ یک «برنامه‌نویس پایتون وب» ببینیم اینترنت و وب چطور کار می‌کنند؛ به‌قدری که وقتی بعداً با Flask کار می‌کنید، بدانید پشت صحنه چه اتفاقی می‌افتد. وارد جزئیات خیلی فنی نمی‌شویم، فقط تصویر کلی را می‌سازیم.


۱. فرق «اینترنت» و «وب»

پس:

۲. نقش مرورگر و سرور

برای دیدن یک سایت، دو بازیگر اصلی داریم:

  1. مرورگر (Browser)
    مثل Chrome، Firefox، Edge، Safari
    • روی کامپیوتر یا موبایل شما اجرا می‌شود.
    • درخواست (Request) به سرور می‌فرستد.
    • پاسخ (Response) سرور را دریافت کرده و آن را نمایش می‌دهد.
  2. سرور (Server)
    • یک کامپیوتر (معمولاً در دیتاسنتر) که همیشه روشن است.
    • یک برنامهٔ سرور وب روی آن اجرا می‌شود (مثلاً Nginx، Apache، یا برنامهٔ Flask شما).
    • درخواست‌ها را می‌گیرد و پاسخ مناسب را برمی‌گرداند.

به این مدل می‌گویند مدل «کلاینت–سرور»:

۳. آدرس‌های وب: URL و دامنه

وقتی در مرورگر چیزی مثل این را می‌نویسید:

https://example.com/page?lang=fa

این یک URL است (Uniform Resource Locator)؛ یعنی «نشانی یک منبع در وب».

اجزای مهم URL:

در Flask و دیگر فریم‌ورک‌های وب، شما معمولاً مسیرها (Routeها) را تعریف می‌کنید؛ مثلاً:

تا مشخص کنید هر آدرس چه پاسخی برگرداند.


۴. HTTP چیست؟

مرورگر و سرور با یک «زبان مشترک» با هم صحبت می‌کنند که نامش HTTP است:

HTTP = HyperText Transfer Protocol

HTTP بر پایهٔ مفهوم ساده‌ای کار می‌کند:

کلاینت درخواست می‌فرستد → سرور پاسخ می‌دهد

۵. درخواست HTTP (Request) چیست؟

وقتی وارد یک سایت می‌شوید، مرورگر یک HTTP Request می‌فرستد.

چیزهای مهم در یک درخواست:

  1. متد (Method)
    رایج‌ترین متدها:
    • GET: گرفتن اطلاعات (مثلاً نمایش یک صفحه)
    • POST: فرستادن اطلاعات (مثلاً فرم ثبت‌نام)
      متدهای دیگر (مثل PUT, DELETE و…) را فعلاً فقط به‌صورت اسمی بدانید.
  2. آدرس (Path)
    مثلاً /, /login, /search
  3. هدرها (Headers)
    اطلاعات جانبی، مثل:
    • مرورگر چیست
    • زبان ترجیحی کاربر
    • نوع داده‌ای که می‌پذیرد
  4. بدنه (Body)
    • در GET معمولاً خالی است.
    • در POST معمولاً دادهٔ فرم‌ها، JSON و… در بدنه قرار می‌گیرد.

در Flask، شما این اطلاعات را از شیء request می‌گیرید (این را در فصل Flask به‌صورت عملی می‌بینید).


۶. پاسخ HTTP (Response) چیست؟

سرور بعد از دریافت درخواست، یک HTTP Response برمی‌گرداند.

چیزهای مهم در یک پاسخ:

  1. کد وضعیت (Status Code)
    عددی که می‌گوید نتیجهٔ درخواست چه بوده. مثلاً:
    • 200 OK → همه‌چیز خوب است، صفحه را بگیر.
    • 404 Not Found → صفحه/منبع پیدا نشد.
    • 500 Internal Server Error → مشکلی در سرور رخ داده.
  2. هدرها (Headers)
    اطلاعاتی مثل:
    • نوع محتوا (text/html, application/json, image/png, …)
    • طول محتوا
    • تنظیمات کش (Cache) و…
  3. بدنه (Body)
    خودِ محتوا، مثلاً:
    • کد HTML صفحه
    • یک تصویر
    • دادهٔ JSON
    • یا حتی یک فایل PDF

وقتی یک صفحهٔ وب می‌سازید، کارتان عمدتاً تولید همین بدنه (و گاهی هدرها) است.


۷. چرخهٔ سادهٔ یک درخواست وب

وقتی آدرس یک سایت را می‌نویسید و Enter می‌زنید، به‌طور خلاصه اتفاق‌های زیر می‌افتد:

  1. مرورگر شما URL را بررسی می‌کند.
  2. دامنه (مثلاً example.com) به یک آدرس IP تبدیل می‌شود (کارِ DNS).
  3. مرورگر با آن IP ارتباط برقرار می‌کند و یک درخواست HTTP می‌فرستد.
  4. این درخواست به سرور وب می‌رسد:
    • سرور وب (یا برنامهٔ Flask) تصمیم می‌گیرد چه پاسخی بدهد.
  5. برنامه (مثلاً Flask) یک پاسخ HTTP تولید می‌کند:
    • کد وضعیت
    • هدرها
    • بدنه (مثلاً HTML)
  6. مرورگر پاسخ را می‌گیرد:
    • HTML را تحلیل (Parse) می‌کند
    • اگر در HTML اشاره به CSS، JavaScript یا تصاویر باشد، برای هرکدام درخواست‌های جدید می‌فرستد.
  7. مرورگر نتیجه را به‌صورت تصویری به کاربر نمایش می‌دهد.

در فصل Flask، شما در قدم ۴ و ۵ نقش دارید: یعنی برنامهٔ پایتون شما تعیین می‌کند چه پاسخی برگردد.


۸. صفحات استاتیک و دینامیک

وب‌سایت‌ها به دو شکل کلی محتوا تولید می‌کنند:

۸.۱. صفحات استاتیک (Static)

مثال:
یک صفحهٔ معرفی شرکت که همیشه یک متن ثابت دارد.

۸.۲. صفحات دینامیک (Dynamic)

مثال‌ها:

پایتون (با Flask، Django و…) بیشتر برای ساخت صفحات دینامیک استفاده می‌شود.


۹. فرانت‌اند و بک‌اند (نمای کلی)

در توسعهٔ وب معمولاً دو بخش را از هم جدا می‌کنند:

  1. فرانت‌اند (Front-end)
    • چیزی که کاربر در مرورگر می‌بیند و با آن کار می‌کند.
    • فناوری‌ها:
      • HTML → ساختار صفحه
      • CSS → ظاهر (رنگ‌ها، فونت، چیدمان و…)
      • JavaScript → رفتار تعاملی در سمت مرورگر
  2. بک‌اند (Back-end)
    • کدی که روی سرور اجرا می‌شود.
    • مسئول:
      • گرفتن درخواست
      • پردازش داده‌ها
      • کار با پایگاه داده
      • برگرداندن پاسخ (مثلاً HTML یا JSON)
    • اینجا جایی است که شما از پایتون (و Flask) استفاده می‌کنید.

در این دوره تمرکز اصلی روی بک‌اند با پایتون است، و فقط تا حد لازم با مفاهیم فرانت‌اند آشنا می‌شوید.


۱۰. API و JSON (در حد آشنایی)

علاوه بر صفحات HTML، سرورها می‌توانند به‌جای صفحه، دادهٔ خام برگردانند تا برنامه‌های دیگر از آن استفاده کنند. به این سبک می‌گویند:

رایج‌ترین قالب داده برای این کار JSON است (شبیه دیکشنری پایتون):

مثال از یک پاسخ JSON:

json
{
  "name": "Ali",
  "age": 25,
  "is_student": true
}

بعداً در بخش «API های بسیار ساده» می‌بینید که چطور می‌توانید با Flask یک API کوچک بنویسید که به مرورگر (یا برنامه‌های دیگر) JSON برگرداند.


۱۱. وب امن‌تر: HTTPS (در حد معرفی)

وقتی در نوار آدرس مرورگر، کنار سایت یک علامت قفل می‌بینید، یعنی سایت از HTTPS استفاده می‌کند.

برای یادگیری Flask، لازم نیست وارد جزئیات فنی HTTPS شوید، اما باید بدانید:

۱۲. ارتباط این مفاهیم با Flask

در فصل‌های بعد، وقتی با Flask کار می‌کنید:

با درک این نمای کلی، وقتی اولین وب‌سرور سادهٔ خود را با Flask می‌سازید، دقیقاً می‌دانید آن چند خط کد در کجای این زنجیره قرار می‌گیرند و چه نقشی دارند.

Views: 4

Comments

Please login to add a comment.

Don't have an account? Register now!