Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk membina API RESTful dan menyambung ke pangkalan data MySQL menggunakan Golang?
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.
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
github.com/go-sql-driver/mysql
) github.com/go-sql-driver/mysql
)构建 RESTful API
go mod init c6cfd8f96e637fcf5991d47203973718
命令创建新项目。go get -u github.com/go-sql-driver/mysql
命令安装 MySQL 驱动程序。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)) }
sql.Open
函数连接到 MySQL 数据库。http.HandleFunc
函数定义两个路由处理程序:/users
和 /users/:id
。http.ListenAndServe
函数启动服务器。处理用户请求
/users
处理程序中,使用 db.Query
函数从数据库中获取所有用户。/users/:id
处理程序中,使用 db.QueryRow
函数从数据库中获取特定用户。json.NewEncoder
函数将用户数据编码为 JSON 并写入到 HTTP 响应中。实战案例
假设你的 MySQL 数据库中有名为 users
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) );
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. 🎜/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. 🎜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!