Golang を使用して RESTful API を構築し、MySQL データベースに接続するにはどうすればよいですか?

WBOY
リリース: 2024-06-05 19:22:01
オリジナル
995 人が閲覧しました

Golang を使用して RESTful API を構築し、MySQL データベースに接続します: Golang、MySQL ドライバーをインストールし、プロジェクトを作成します。すべてのユーザーと特定のユーザーの取得を含む API ハンドラーを定義します。 sql.Open 関数を通じて MySQL データベースに接続します。 db.Query と db.QueryRow を使用してデータベースからデータを取得します。 json.NewEncoder を使用して JSON 応答を書き込みます。オプション: 新しいユーザーを作成するためのコード例を提供します。

如何使用 Golang 构建 RESTful API 并连接 MySQL 数据库?

Golang を使用して RESTful API を構築し、MySQL データベースに接続する方法

はじめに

RESTful API は、クライアントとサーバー間の対話を簡素化する HTTP プロトコルに基づく API タイプです。 Golang を使用して RESTful API を構築すると、その高いパフォーマンスと同時実行性を最大限に活用できます。この記事では、Golang を使用して RESTful API を構築し、MySQL データベースに接続する方法を説明します。

前提条件

  • Golang がインストールされていること (バージョン 1.18 以降)
  • MySQL データベースと MySQL ドライバー (github.com/go-sql-driver/mysql) github.com/go-sql-driver/mysql
  • 文本编辑器或 IDE(如 Visual Studio Code)

构建 RESTful API

  1. 创建新项目:使用 go mod init <项目名称> 命令创建新项目。
  2. 安装 MySQL 驱动程序:使用 go get -u github.com/go-sql-driver/mysql 命令安装 MySQL 驱动程序。
  3. 编写 API 处理程序:main.go 文件中编写以下 API 处理程序:
package main

import (
    "database/sql"
    "log"
    "net/http"
    "strconv"

    "github.com/go-sql-driver/mysql"
)

const (
    user     = "root"
    password = ""
    host     = "localhost"
    port     = 3306
    database = "my_db"
)

var db *sql.DB

func init() {
    dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?parseTime=true", user, password, host, port, database)
    var err error
    db, err = sql.Open("mysql", dsn)
    if err != nil {
        log.Fatal(err)
    }
}

func main() {
    http.HandleFunc("/users", handleUsers)
    http.HandleFunc("/users/", handleUser)
    log.Fatal(http.ListenAndServe(":8080", nil))
}
ログイン後にコピー
  1. 连接到 MySQL 数据库:使用 sql.Open 函数连接到 MySQL 数据库。
  2. 定义路由处理程序:使用 http.HandleFunc 函数定义两个路由处理程序:/users/users/:id
  3. 运行服务器:使用 http.ListenAndServe 函数启动服务器。

处理用户请求

  1. 获取所有用户:/users 处理程序中,使用 db.Query 函数从数据库中获取所有用户。
  2. 获取特定用户:/users/:id 处理程序中,使用 db.QueryRow 函数从数据库中获取特定用户。
  3. 编写响应:使用 json.NewEncoder 函数将用户数据编码为 JSON 并写入到 HTTP 响应中。

实战案例

假设你的 MySQL 数据库中有名为 users

テキスト編集

RESTful API を構築する

    🎜 新しいプロジェクトを作成する: 🎜go mod init <project name> コマンドを使用して新しいプロジェクトを作成します。 🎜🎜🎜MySQL ドライバーをインストールします: 🎜 go get -u github.com/go-sql-driver/mysql コマンドを使用して、MySQL ドライバーをインストールします。 🎜🎜🎜 API ハンドラーを作成します: 🎜 main.go ファイルに次の API ハンドラーを作成します: 🎜
CREATE TABLE users (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  PRIMARY KEY (id)
);
ログイン後にコピー
    🎜🎜 MySQL データベースに接続します: 🎜 sql.Open 関数を使用して MySQL データベースに接続します。 🎜🎜🎜ルート ハンドラーを定義します: 🎜 http.HandleFunc 関数を使用して、2 つのルート ハンドラー /users/users/:id を定義します。 🎜🎜🎜サーバーを実行します: 🎜 http.ListenAndServe 関数を使用してサーバーを起動します。 🎜
🎜🎜ユーザーリクエストの処理🎜🎜
    🎜🎜すべてのユーザーを取得: 🎜/users ハンドラーで、db.Query 関数を使用して取得します。データベースからすべてのユーザーを取得します。 🎜🎜🎜特定のユーザーを取得する: 🎜 /users/:id ハンドラーで、db.QueryRow 関数を使用してデータベースから特定のユーザーを取得します。 🎜🎜🎜レスポンスの書き込み: 🎜 json.NewEncoder 関数を使用して、ユーザー データを JSON にエンコードし、HTTP レスポンスに書き込みます。 🎜
🎜🎜実際的なケース🎜🎜🎜MySQL データベースに次の構造を持つ users という名前のテーブルがあるとします。 🎜
func handleCreateUser(w http.ResponseWriter, r *http.Request) {
    var user User
    if err := json.NewDecoder(r.Body).Decode(&user); err != nil {
        http.Error(w, "Invalid JSON", http.StatusBadRequest)
        return
    }

    stmt, err := db.Prepare("INSERT INTO users (name, email) VALUES (?, ?);")
    if err != nil {
        log.Fatal(err)
    }
    defer stmt.Close()

    res, err := stmt.Exec(user.Name, user.Email)
    if err != nil {
        log.Fatal(err)
    }

    id, err := res.LastInsertId()
    if err != nil {
        log.Fatal(err)
    }

    user.ID = int(id)
    json.NewEncoder(w).Encode(user)
}
ログイン後にコピー
🎜 次のコードを使用して新しいユーザーを作成し、データベースに追加します: 🎜rrreee🎜🎜注: 🎜データベース接続情報とクロスドメインリクエストに関連する処理メカニズムを更新することを忘れないでください。 🎜

以上がGolang を使用して RESTful API を構築し、MySQL データベースに接続するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!