Wie verwende ich Golang, um eine RESTful-API zu erstellen und eine Verbindung zu einer MySQL-Datenbank herzustellen?

WBOY
Freigeben: 2024-06-05 19:22:01
Original
995 Leute haben es durchsucht

Erstellen Sie eine RESTful-API und stellen Sie mit Golang eine Verbindung zur MySQL-Datenbank her: Installieren Sie Golang und den MySQL-Treiber und erstellen Sie ein Projekt. Definieren Sie API-Handler, einschließlich des Abrufens aller Benutzer und bestimmter Benutzer. Stellen Sie über die Funktion sql.Open eine Verbindung zur MySQL-Datenbank her. Verwenden Sie db.Query und db.QueryRow, um Daten aus der Datenbank abzurufen. Verwenden Sie json.NewEncoder, um JSON-Antworten zu schreiben. Optional: Stellen Sie Codebeispiele zum Erstellen neuer Benutzer bereit.

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

So verwenden Sie Golang, um eine RESTful-API zu erstellen und eine Verbindung zu einer MySQL-Datenbank herzustellen

Einführung

RESTful-API ist ein API-Typ, der auf dem HTTP-Protokoll basiert und die Interaktion zwischen dem Client und dem Server vereinfacht . Beim Erstellen von RESTful-APIs mit Golang werden dessen hohe Leistung und Parallelität voll ausgenutzt. In diesem Artikel erfahren Sie, wie Sie mit Golang eine RESTful-API erstellen und eine Verbindung zu einer MySQL-Datenbank herstellen.

Voraussetzungen

  • Golang installiert (Version 1.18 oder höher)
  • MySQL-Datenbank und MySQL-Treiber (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))
}
Nach dem Login kopieren
  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

Textbearbeitung

Erstellen Sie eine RESTful-API

    🎜Erstellen Sie ein neues Projekt: 🎜Erstellen Sie mit dem Befehl go mod init <project name> ein neues Projekt. 🎜🎜🎜Installieren Sie den MySQL-Treiber: 🎜Verwenden Sie den Befehl go get -u github.com/go-sql-driver/mysql, um den MySQL-Treiber zu installieren. 🎜🎜🎜Schreiben Sie den API-Handler: 🎜Schreiben Sie den folgenden API-Handler in die Datei main.go: 🎜
CREATE TABLE users (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  PRIMARY KEY (id)
);
Nach dem Login kopieren
    🎜🎜Verbinden Sie sich mit der MySQL-Datenbank: 🎜 Verwenden Sie die Funktion sql.Open, um eine Verbindung zur MySQL-Datenbank herzustellen. 🎜🎜🎜Routenhandler definieren: 🎜Verwenden Sie die Funktion http.HandleFunc, um zwei Routenhandler zu definieren: /users und /users/:id . 🎜🎜🎜Führen Sie den Server aus: 🎜Verwenden Sie die Funktion http.ListenAndServe, um den Server zu starten. 🎜
🎜🎜Verarbeiten von Benutzeranfragen🎜🎜
    🎜🎜Alle Benutzer abrufen: 🎜Im Handler /users verwenden Sie zum Abrufen die Funktion db.Query Alle Benutzer aus der Datenbank Alle Benutzer abrufen in . 🎜🎜🎜Einen bestimmten Benutzer abrufen: 🎜Im Handler /users/:id verwenden Sie die Funktion db.QueryRow, um einen bestimmten Benutzer aus der Datenbank abzurufen. 🎜🎜🎜Antwort schreiben: 🎜Verwenden Sie die Funktion json.NewEncoder, um die Benutzerdaten in JSON zu kodieren und in die HTTP-Antwort zu schreiben. 🎜
🎜🎜Praktischer Fall🎜🎜🎜Angenommen, Sie haben eine Tabelle mit dem Namen users in Ihrer MySQL-Datenbank mit der folgenden Struktur: 🎜
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)
}
Nach dem Login kopieren
🎜Sie können den folgenden Code verwenden, um einen neuen Benutzer zu erstellen und Fügen Sie es zur Datenbank hinzu: 🎜rrreee🎜🎜Hinweis: 🎜Vergessen Sie nicht, die Datenbankverbindungsinformationen und den Verarbeitungsmechanismus für domänenübergreifende Anforderungen zu aktualisieren. 🎜

Das obige ist der detaillierte Inhalt vonWie verwende ich Golang, um eine RESTful-API zu erstellen und eine Verbindung zu einer MySQL-Datenbank herzustellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!