Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk membina API RESTful dan menyambung ke pangkalan data MySQL menggunakan Golang?

Bagaimana untuk membina API RESTful dan menyambung ke pangkalan data MySQL menggunakan Golang?

WBOY
WBOYasal
2024-06-05 19:22:01939semak imbas

Bina API RESTful dan sambung ke pangkalan data MySQL menggunakan Golang: Pasang Golang, pemacu MySQL dan buat projek. Tentukan pengendali API, termasuk mendapatkan semua pengguna dan pengguna tertentu. Sambung ke pangkalan data MySQL melalui fungsi sql.Open. Gunakan db.Query dan db.QueryRow untuk mendapatkan data daripada pangkalan data. Gunakan json.NewEncoder untuk menulis respons JSON. Pilihan: Berikan contoh kod untuk mencipta pengguna baharu.

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

Cara menggunakan Golang untuk membina API RESTful dan menyambung ke pangkalan data MySQL

Pengenalan

RESTful API ialah jenis API berdasarkan protokol HTTP yang memudahkan interaksi antara klien dan pelayan . Membina API RESTful menggunakan Golang memanfaatkan sepenuhnya prestasi tinggi dan selarinya. Artikel ini akan membimbing anda tentang cara menggunakan Golang untuk membina API RESTful dan menyambung ke pangkalan data MySQL.

Prasyarat

  • Golang dipasang (versi 1.18 ke atas)
  • Pangkalan data MySQL dan pemacu MySQL (github.com/go-sql-driver/mysql) github.com/go-sql-driver/mysql
  • 文本编辑器或 IDE(如 Visual Studio Code)

构建 RESTful API

  1. 创建新项目:使用 go mod init c6cfd8f96e637fcf5991d47203973718 命令创建新项目。
  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

Text editing ul>

Bina API RESTful

    Buat projek baharu: 🎜Buat menggunakan perintah go mod init ea05abe187ada2ae937559e33ea428f2 untuk projek baharu. 🎜🎜🎜Pasang pemacu MySQL: 🎜Gunakan perintah go get -u github.com/go-sql-driver/mysql untuk memasang pemacu MySQL. 🎜🎜🎜Tulis pengendali API: 🎜Tulis pengendali API berikut dalam fail main.go: 🎜
    CREATE TABLE users (
      id INT NOT NULL AUTO_INCREMENT,
      name VARCHAR(255) NOT NULL,
      email VARCHAR(255) NOT NULL,
      PRIMARY KEY (id)
    );
      🎜🎜Sambung ke pangkalan data MySQL: 🎜 Gunakan fungsi sql.Open untuk menyambung ke pangkalan data MySQL. 🎜🎜🎜Tentukan pengendali laluan: 🎜Gunakan fungsi http.HandleFunc untuk menentukan dua pengendali laluan: /users dan /users/:id . 🎜🎜🎜Jalankan pelayan: 🎜Gunakan fungsi http.ListenAndServe untuk memulakan pelayan. 🎜
    🎜🎜Mengendalikan permintaan pengguna🎜🎜
      🎜🎜Dapatkan semua pengguna: 🎜Dalam pengendali /users, gunakan fungsi db.Query untuk mendapatkan semula semua pengguna daripada pangkalan data Dapatkan semua pengguna dalam . 🎜🎜🎜Dapatkan pengguna tertentu: 🎜Dalam pengendali /users/:id, gunakan fungsi db.QueryRow untuk mendapatkan pengguna tertentu daripada pangkalan data. 🎜🎜🎜Menulis respons: 🎜Gunakan fungsi json.NewEncoder untuk mengekod data pengguna ke dalam JSON dan menulisnya ke dalam respons HTTP. 🎜
    🎜🎜Kes praktikal🎜🎜🎜Andaikan anda mempunyai jadual bernama pengguna dalam pangkalan data MySQL anda dengan struktur berikut: 🎜
    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)
    }
    🎜Anda boleh menggunakan kod berikut untuk mencipta pengguna baharu dan tambahkannya ke pangkalan data: 🎜rrreee🎜🎜Nota: 🎜Jangan lupa untuk mengemas kini maklumat sambungan pangkalan data dan mekanisme pemprosesan yang berkaitan dengan permintaan merentas domain. 🎜

    Atas ialah kandungan terperinci Bagaimana untuk membina API RESTful dan menyambung ke pangkalan data MySQL menggunakan Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    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