ホームページ  >  記事  >  バックエンド開発  >  Web サイト開発における Golang テクノロジーのベスト プラクティス

Web サイト開発における Golang テクノロジーのベスト プラクティス

王林
王林オリジナル
2024-03-18 14:03:03370ブラウズ

Web サイト開発における Golang テクノロジーのベスト プラクティス

Web サイト開発では、適切なテクノロジー スタックを選択することが重要です。強力なプログラミング言語である Golang には、Web サイト開発における多くのベスト プラクティスもあります。この記事では、Web サイト開発における Golang テクノロジーのベスト プラクティスをいくつか紹介し、具体的なコード例をいくつか示します。

Gin フレームワークの使用

Gin は高速 HTTP Web フレームワークであり、安定した効率的な Web アプリケーションを迅速に構築するために使用できます。簡単な Web サーバーの例を次に示します:

package main

「github.com/gin-gonic/gin」をインポートします

関数 main() {
    ルーター := gin.Default()

    router.GET("/", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "こんにちは、ジン!",
        })
    })

    router.Run(":8080")
}

データベース操作

Webサイト開発ではデータベース操作が必要になることが多く、Golangには優れたデータベース操作ライブラリも多数用意されています。 MySQL 操作に Gorm を使用する例を次に示します:

package main

輸入 (
    「gorm.io/ドライバー/mysql」
    「ゴーム.io/ゴーム」
)

typeUser 構造体 {
    ID 整数
    名前文字列
}

関数 main() {
    dsn := "ユーザー:パスワード@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
    db、err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    エラーの場合 != nil {
        Panic("データベースへの接続に失敗しました")
    }

    db.AutoMigrate(&ユーザー{})

    ユーザー := ユーザー{名前: "アリス"}
    db.Create(&user)

    var resultUser
    db.First(&result, 1)
    fmt.Println(結果)
}

同時処理

Web サイト開発では、同時リクエストの処理が非常に重要です。 Golang は本質的に同時処理をサポートしています。次は goroutine の使用例です:

package main

輸入 (
    「fmt」
    "時間"
)

関数 main() {
    for i := 0; i < 10; i {
        go func(i int) {
            fmt.Println("ゴルーチン", i)
        }(私)
    }

    time.Sleep(time.Second)
}

JWT 認証

Web サイト開発において、ユーザー認証は重要な部分です。 JWT を使用すると、ユーザー認証を簡単かつ効率的に実行できます。次は JWT 認証の例です:

パッケージメイン

輸入 (
    「github.com/dgrijalva/jwt-go」
    「ネット/http」
    "時間"
)

var SecretKey = []byte("秘密")

func GenerateToken() (文字列、エラー) {
    トークン := jwt.New(jwt.SigningMethodHS256)
    クレーム := token.Claims.(jwt.MapClaims)
    クレーム["承認済み"] = true
    claim["exp"] = time.Now().Add(time.Hour * 24).Unix()

    tokenString、エラー := token.SignedString(secretKey)
    エラーの場合 != nil {
        「」を返します、エラー
    }

    トークン文字列を返す、nil
}

func AuthMiddleware(次 http.HandlerFunc) http.HandlerFunc {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        tokenString := r.Header.Get("認可")
        トークン、エラー := jwt.Parse(tokenString, func(token *jwt.Token) (インターフェース{}, エラー) {
            SecretKey を返す、nil
        })

        エラーの場合 != nil || !token.Valid {
            w.WriteHeader(http.StatusUnauthorized)
            w.Write([]byte("不正"))
            戻る
        }

        next.ServeHTTP(w, r)
    })
}

関数 main() {
    http.HandleFunc("/login", func(w http.ResponseWriter, r *http.Request) {
        トークン、エラー := GenerateToken()
        エラーの場合 != nil {
            w.WriteHeader(http.StatusInternalServerError)
            w.Write([]byte("内部サーバー エラー"))
            戻る
        }

        w.WriteHeader(http.StatusOK)
        w.Write([]バイト(トークン))
    })

    http.Handle("/protected", AuthMiddleware(func(w http.ResponseWriter, r *http.Request) {
        w.WriteHeader(http.StatusOK)
        w.Write([]byte("あなたは許可されています"))
    }))

    http.ListenAndServe(":8080", nil)
}

结语

ウェブサイト公開では、Golang 技術の応用には、Gin フレームワーク、データベース操作、公開処理、JWT 認証などの機能を使用することで、より効率的に構築することができます。これらの特定のコード例は、Web サイトの公開で Golang 技術をより適切に使用するのに役立つことが期待されます。

以上がWeb サイト開発における Golang テクノロジーのベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。