Maison >développement back-end >Golang >Comment utiliser Golang pour créer une API RESTful et se connecter à une base de données MySQL ?

Comment utiliser Golang pour créer une API RESTful et se connecter à une base de données MySQL ?

WBOY
WBOYoriginal
2024-06-05 19:22:011019parcourir

Créez l'API RESTful et connectez-vous à la base de données MySQL à l'aide de Golang : installez Golang, le pilote MySQL et créez un projet. Définissez les gestionnaires d'API, notamment en obtenant tous les utilisateurs et des utilisateurs spécifiques. Connectez-vous à la base de données MySQL via la fonction sql.Open. Utilisez db.Query et db.QueryRow pour obtenir des données de la base de données. Utilisez json.NewEncoder pour écrire des réponses JSON. Facultatif : fournissez des exemples de code pour créer de nouveaux utilisateurs.

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

Comment utiliser Golang pour créer une API RESTful et se connecter à une base de données MySQL

Introduction

L'API RESTful est un type d'API basé sur le protocole HTTP qui simplifie l'interaction entre le client et le serveur . La création d'API RESTful à l'aide de Golang tire pleinement parti de ses hautes performances et de sa concurrence. Cet article vous expliquera comment utiliser Golang pour créer une API RESTful et vous connecter à une base de données MySQL.

Prérequis

  • Golang installé (version 1.18 ou supérieure)
  • Base de données MySQL et pilote 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

Édition de texte

ul>

Créez une API RESTful

    🎜Créez un nouveau projet : 🎜Créez un nouveau projet à l'aide de la commande go mod init ea05abe187ada2ae937559e33ea428f2. 🎜🎜🎜Installez le pilote MySQL : 🎜Utilisez la commande go get -u github.com/go-sql-driver/mysql pour installer le pilote MySQL. 🎜🎜🎜Écrivez le gestionnaire d'API : 🎜Écrivez le gestionnaire d'API suivant dans le fichier main.go : 🎜
CREATE TABLE users (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  PRIMARY KEY (id)
);
    🎜🎜Connectez-vous à la base de données MySQL : 🎜 Utilisez la fonction sql.Open pour vous connecter à la base de données MySQL. 🎜🎜🎜Définissez les gestionnaires de route : 🎜Utilisez la fonction http.HandleFunc pour définir deux gestionnaires de route : /users et /users/:id . 🎜🎜🎜Exécutez le serveur : 🎜Utilisez la fonction http.ListenAndServe pour démarrer le serveur. 🎜
🎜🎜Gestion des requêtes des utilisateurs🎜🎜
    🎜🎜Obtenir tous les utilisateurs : 🎜Dans le gestionnaire /users, utilisez la fonction db.Query pour récupérer tous les utilisateurs de la base de données Obtenir tous les utilisateurs dans . 🎜🎜🎜Obtenir un utilisateur spécifique : 🎜Dans le gestionnaire /users/:id, utilisez la fonction db.QueryRow pour obtenir un utilisateur spécifique de la base de données. 🎜🎜🎜Écriture de la réponse : 🎜Utilisez la fonction json.NewEncoder pour encoder les données utilisateur en JSON et les écrire dans la réponse HTTP. 🎜
🎜🎜Cas pratique🎜🎜🎜Supposons que vous ayez une table nommée users dans votre base de données MySQL avec la structure suivante : 🎜
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)
}
🎜Vous pouvez utiliser le code suivant pour créer un nouvel utilisateur et ajoutez-le À la base de données : 🎜rrreee🎜🎜Remarque : 🎜N'oubliez pas de mettre à jour les informations de connexion à la base de données et le mécanisme de traitement lié aux requêtes inter-domaines. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn