Koleksi soalan temuduga kerangka Golang

WBOY
Lepaskan: 2024-06-02 21:37:01
asal
782 orang telah melayarinya

Rangka kerja Go ialah satu set komponen yang memperluaskan perpustakaan terbina dalam Go, menyediakan kefungsian pra-bina (seperti pembangunan web dan operasi pangkalan data). Rangka kerja Go yang popular termasuk Gin (pembangunan web), GORM (operasi pangkalan data) dan RESTful (pengurusan API). Middleware ialah corak pemintas dalam rantai pemprosesan permintaan HTTP, digunakan untuk menambah fungsi seperti pengesahan atau pengelogan permintaan tanpa mengubah suai pengendali. Pengurusan sesi mengekalkan status sesi dengan menyimpan data pengguna Anda boleh menggunakan gorila/sesi untuk mengurus sesi.

Koleksi soalan temuduga kerangka Golang

Koleksi soalan temuduga rangka kerja Go

Penyediaan temu bual ialah bahagian penting dalam proses pembangunan perisian, terutamanya untuk susunan teknologi seperti rangka kerja Go. Artikel ini mengumpulkan koleksi soalan temuduga rangka kerja Go biasa dan menyediakan contoh kod praktikal untuk membantu anda bersedia untuk temu duga anda yang seterusnya.

1. Terangkan Rangka Kerja Go

Jawapan: Rangka kerja Go ialah koleksi perpustakaan terbina dalam yang dipertingkatkan dalam bahasa Go yang menyediakan komponen dan struktur pra-bina untuk mengendalikan tugas biasa. Rangka kerja ini mengandungi modul untuk fungsi seperti pembangunan web, operasi pangkalan data dan pengurusan API.

2. Senaraikan beberapa rangka kerja Go yang popular

Jawapan:

  • Pembangunan web: Gin, Echo, Gorilla
  • operasi, pangkalan data SQL
  • Pengurusan API:
RESTful, Beego, Buffalo

3. Terangkan peranan middleware
Jawapan:

Middleware ialah corak pemintas yang digunakan untuk melaksanakan kod tersuai dalam rantai pemprosesan permintaan HTTP. Ia membolehkan anda menambah fungsi seperti pengesahan, kebenaran dan pengelogan permintaan tanpa mengubah suai pengendali itu sendiri.

4. Cara menggunakan middleware dalam Gin

package main

import (
    "github.com/gin-gonic/gin"
    "golang.org/x/time/rate"
    "time"
)

func main() {
    r := gin.Default()

    // 创建一个每秒允许 5 个请求的速率限制器
    limiter := rate.NewLimiter(5, 5)

    // 定义一个中间件,它使用速率限制器检查每个请求
    middleware := func(c *gin.Context) {
        if !limiter.Allow() {
            c.AbortWithStatus(http.StatusTooManyRequests)
            return
        }

        // 继续处理请求
        c.Next()
    }

    // 将中间件应用到所有路由
    r.Use(middleware)

    r.Run()
}
Salin selepas log masuk

5 Terangkan peranan pengurusan sesi dalam aplikasi web Go
Jawapan:

Pengurusan sesi membolehkan pengguna menyimpan dan mendapatkan semula maklumat. Ia penting untuk kekal log masuk, menjejak kandungan troli beli-belah dan data khusus pengguna yang lain.

6 Gunakan gorila/sesi untuk menguruskan sesi🎜🎜
package main

import (
    "fmt"
    "github.com/gorilla/sessions"
    "github.com/gorilla/mux"
    "log"
    "net/http"
)

const (
    SessionName = "session-name"
    CookieName  = "session-id"
    Secret      = "secret-key"
)

var (
    sessionStore *sessions.CookieStore
)

func main() {
    // 创建 session 存储
    sessionStore = sessions.NewCookieStore([]byte(Secret))

    // 创建路由器
    r := mux.NewRouter()
    r.HandleFunc("/login", loginHandler)
    r.HandleFunc("/profile", profileHandler)

    // 启动服务器
    log.Fatal(http.ListenAndServe(":8080", r))
}

// loginHandler 处理登录请求并创建 session
func loginHandler(w http.ResponseWriter, r *http.Request) {
    // 创建 session
    session, err := sessionStore.Get(r, SessionName)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }

    // 将用户 ID 设置为 session 数据
    session.Values["user_id"] = 10

    // 保存 session
    if err = sessionStore.Save(r, w, session); err != nil {
       http.Error(w, err.Error(), http.StatusInternalServerError)
       return
    }

    // 重定向到个人资料页面
    http.Redirect(w, r, "/profile", http.StatusFound)
}

// profileHandler 处理个人资料请求并检索 session 数据
func profileHandler(w http.ResponseWriter, r *http.Request) {
    // 获取 session
    session, err := sessionStore.Get(r, SessionName)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }

    // 从 session 中检索用户 ID
    userID, ok := session.Values["user_id"].(int)
    if !ok {
        http.Error(w, "Invalid user ID in session", http.StatusBadRequest)
        return
    }

    // 使用用户 ID 渲染个人资料页面
    fmt.Fprintf(w, "Your profile page, user ID: %d", userID)
}
Salin selepas log masuk

Atas ialah kandungan terperinci Koleksi soalan temuduga kerangka Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan