Let's Go بهبودهای سرور و امنیت › ساختار http.Server
قبلی · فهرست · بعدی
فصل 9.1.

ساختار http.Server (The http.Server Struct)

در این بخش، نحوه استفاده از ساختار http.Server (http.Server Struct) برای پیکربندی سرور (Server Configuration) را بررسی می‌کنیم. این ساختار امکان تنظیم پارامترها (Parameter Settings) و رفتار سرور (Server Behavior) را فراهم می‌کند.

برای شروع، بیایید تنظیمات پایه (Basic Settings) سرور را در کد اصلی (Main Code) خود اضافه کنیم:

File: cmd/web/main.go
package main

...

func main() {
    addr := flag.String("addr", ":4000", "HTTP network address")
    dsn := flag.String("dsn", "web:pass@/snippetbox?parseTime=true", "MySQL data source name")
    flag.Parse()

    logger := slog.New(slog.NewTextHandler(os.Stdout, nil))

    db, err := openDB(*dsn)
    if err != nil {
        logger.Error(err.Error())
        os.Exit(1)
    }
    defer db.Close()

    templateCache, err := newTemplateCache()
    if err != nil {
        logger.Error(err.Error())
        os.Exit(1)
    }

    formDecoder := form.NewDecoder()

    sessionManager := scs.New()
    sessionManager.Store = mysqlstore.New(db)
    sessionManager.Lifetime = 12 * time.Hour

    app := &application{
        logger:         logger,
        snippets:       &models.SnippetModel{DB: db},
        templateCache:  templateCache,
        formDecoder:    formDecoder,
        sessionManager: sessionManager,
    }

    // Initialize a new http.Server struct. We set the Addr and Handler fields so
    // that the server uses the same network address and routes as before.
    srv := &http.Server{
        Addr:    *addr,
        Handler: app.routes(),
    }

    logger.Info("starting server", "addr", srv.Addr)

    // Call the ListenAndServe() method on our new http.Server struct to start 
    // the server.
    err = srv.ListenAndServe()
    logger.Error(err.Error())
    os.Exit(1)
}

...

این یک تغییر کوچک است که هنوز بر رفتار برنامه ما تأثیر نمی‌گذارد، اما ما را به خوبی برای کارهای آینده آماده می‌کند.

واژه‌نامه اصطلاحات فنی

اصطلاح فارسی معادل انگلیسی توضیح
ساختار http.Server http.Server Struct ساختار داده برای پیکربندی سرور
پیکربندی سرور Server Configuration تنظیمات و پارامترهای سرور
تنظیم پارامترها Parameter Settings تعیین مقادیر پارامترهای سرور
رفتار سرور Server Behavior نحوه عملکرد سرور
تنظیمات پایه Basic Settings پیکربندی‌های اولیه و ضروری
کد اصلی Main Code کد اصلی برنامه
آدرس شبکه Network Address آدرس و پورت سرور
مسیریاب Router مدیریت مسیرهای درخواست
زمان‌سنج Timer محدودیت‌های زمانی
گزارش‌دهی خطا Error Reporting ثبت و نمایش خطاها