近年、Golang (Go 言語) は、その効率的な実行速度とシンプルな構文により、インターネット開発で徐々に人気のある言語となり、非常に人気のあるインターネット アプリケーションとして、ブログでも Golang の利点が十分に発揮されています。この記事では、Golangを使って簡単なブログを構築する方法を紹介します。
ステップ 1: Golang をインストールする
まず、Golang 環境をローカルにインストールする必要があります。公式 Web サイトにアクセスして Golang の最新バージョンをダウンロードし、公式 Web サイトの指示に従ってインストールできますが、ここでは詳細は説明しません。インストールが完了したら、GOPATH 環境変数を設定する必要があります。
ステップ 2: Gin をインストールする
ブログをより便利に構築するには、軽量の Web フレームワークである Gin を使用する必要があります。ターミナルで次のコマンドを使用してインストールできます: go get -u github.com/gin-gonic/gin
インストールが完了したら、それをプロジェクト。
ステップ 3: データベース設計
次に、ブログ コンテンツを保存するデータベースを設計する必要があります。 MySQL や PostgreSQL などのリレーショナル データベースを使用できますが、ここでは SQLite を使用することにします。 SQLite を使用する理由は、SQLite が小さくて使いやすく、別のサーバーを起動する必要がないためです。ターミナルで次のコマンドを使用して SQLite をインストールできます: go get -u github.com/mattn/go-sqlite3
インストールが完了したら、次のコマンドを使用してデータベース接続を確立できます。次のコード:
db, err := sql.Open("sqlite3", "./blog.db") if err != nil { panic(err) } defer db.Close()
上記のコードは、最初に sql.Open()
メソッドを呼び出してデータベースに接続し、最後に db.Close() を呼び出します。
リソースを解放するメソッド。 2 番目のパラメータを変更することで、データ ファイルが保存されるパスを設定できます。ここでは、ブログのデータ テーブルに「posts」という名前を付けます。次の SQL ステートメントを使用して、posts データ テーブルを作成できます:
CREATE TABLE posts ( id INTEGER PRIMARY KEY AUTOINCREMENT, title VARCHAR(64) NOT NULL, content TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP );
上記の SQL ステートメントは、id、title、content、created_at を含む、posts という名前のデータ テーブルを作成します。 updated_at 5 つのフィールド。
ステップ 4: 追加、削除、変更、およびクエリの実装
データベースを作成したら、追加、削除、変更、およびクエリ機能の実装を開始できます。ここでは、RESTful API の考え方に基づいてインターフェイスを設計できます。 Gin フレームワークでは、4 つの HTTP メソッド POST、GET、PUT、DELETE を使用して、それぞれ追加、クエリ、更新、削除の操作に対応します。以下は、Gin フレームワークの使用例です。
package main import ( "database/sql" "net/http" "github.com/gin-gonic/gin" _ "github.com/mattn/go-sqlite3" ) type post struct { ID int `json:"id"` Title string `json:"title"` Content string `json:"content"` CreatedAt string `json:"created_at"` UpdatedAt string `json:"updated_at"` } func main() { r := gin.Default() db, err := sql.Open("sqlite3", "./blog.db") if err != nil { panic(err) } defer db.Close() r.GET("/posts", func(c *gin.Context) { var p []post rows, err := db.Query("SELECT * FROM posts") if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } defer rows.Close() for rows.Next() { var ps post rows.Scan(&ps.ID, &ps.Title, &ps.Content, &ps.CreatedAt, &ps.UpdatedAt) p = append(p, ps) } if err := rows.Err(); err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"data": p}) }) r.POST("/posts", func(c *gin.Context) { var p post if err := c.ShouldBindJSON(&p); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } result, err := db.Exec("INSERT INTO posts (title, content) VALUES (?, ?)", p.Title, p.Content) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } p.ID, err = result.LastInsertId() if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"data": p}) }) r.GET("/posts/:id", func(c *gin.Context) { var p post row := db.QueryRow("SELECT * FROM posts WHERE id = ?", c.Param("id")) err := row.Scan(&p.ID, &p.Title, &p.Content, &p.CreatedAt, &p.UpdatedAt) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"data": p}) }) r.PUT("/posts/:id", func(c *gin.Context) { var p post if err := c.ShouldBindJSON(&p); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } result, err := db.Exec("UPDATE posts SET title = ?, content = ? WHERE id = ?", p.Title, p.Content, c.Param("id")) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } p.ID, err = result.LastInsertId() if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"data": p}) }) r.DELETE("/posts/:id", func(c *gin.Context) { _, err := db.Exec("DELETE FROM posts WHERE id = ?", c.Param("id")) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"data": "Post deleted"}) }) r.Run(":8080") }
上記のコードは、GET、POST、PUT、および DELETE の 4 つのメソッドを実装しており、対応するリクエスト アドレスは /posts、/posts/:id、/ です。 post/:id と /posts/:id。このうち、GET メソッドはすべての記事のクエリに使用され、POST メソッドは記事の追加に使用され、GET メソッド (パラメーター付き) は指定された ID を持つ記事のクエリに使用され、PUT メソッドは記事の変更に使用され、記事を削除するにはDELETEメソッドを使用します。
ステップ 5: サービスを開始する
上記のステップを完了したら、ターミナルで次のコマンドを使用してサービスを開始できます: go run main.go
サービスの起動 成功したら、ブラウザに http://localhost:8080/posts と入力してすべての記事を表示できます。
まとめ
上記の手順により、Golang を使用してブログを構築し、Gin フレームワークと SQLite データベースを使用してデータの追加、削除、変更、クエリ機能を実装することができました。もちろん、これは非常に基本的な例にすぎず、ニーズに合わせて拡張できます。
以上がgolang ビルドのブログの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。