Maison >développement back-end >Golang >Méthode d'implémentation de la fonction de requête de commande dans un système de commande développé avec le langage Go

Méthode d'implémentation de la fonction de requête de commande dans un système de commande développé avec le langage Go

PHPz
PHPzoriginal
2023-11-01 11:07:491144parcourir

Méthode dimplémentation de la fonction de requête de commande dans un système de commande développé avec le langage Go

La méthode de développement du langage Go pour implémenter la fonction de requête de commande dans le système de commande nécessite des exemples de code spécifiques

Dans un système de commande de produits alimentaires, la requête de commande est l'une des fonctions très importantes. Les utilisateurs peuvent consulter l'historique de leurs commandes, ainsi que le statut et les détails de la commande via la fonction de requête de commande. Dans cet article, nous présenterons comment utiliser le langage Go pour développer une fonction de requête de commande simple, ainsi que le processus d'implémentation détaillé du code.

  1. Créer un modèle de base de données

Tout d'abord, vous devez créer un modèle de base de données pour stocker les commandes. Nous pouvons utiliser la bibliothèque GORM pour créer et gérer des modèles. Ce qui suit est un modèle de commande simple :

type Order struct {
    ID       uint   `gorm:"primary_key"`
    UserID   uint   `gorm:"not null"`
    Amount   uint   `gorm:"not null"`
    Status   string `gorm:"not null"`
    CreatedAt time.Time
    UpdatedAt time.Time
}

Le code ci-dessus définit un modèle de commande, comprenant les champs suivants :

  • ID : ID de commande, en utilisant le type uint pour représenter la clé primaire
  • UserID : l'ID de quel utilisateur ; la commande appartient à ;
  • Amount : le montant total de la commande, représenté par le type uint ;
  • Status : le statut de la commande, représenté par le type de chaîne
  • CreatedAt : l'heure de création de la commande, représentée par l'heure ; Type d'heure ;
  • UpdatedAt : l'heure de mise à jour de la commande, représentée par la représentation du type d'heure.
  1. Créer une connexion à la base de données

Ensuite, nous devons créer une connexion à la base de données pour faire fonctionner le modèle de commande. Nous pouvons choisir d'utiliser une base de données MySQL, mais nous devons installer le pilote MySQL correspondant. Voici un exemple de connexion à une base de données :

import (
    "fmt"
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
)

func ConnectDB() (*gorm.DB, error) {
    db, err := gorm.Open("mysql", "root:@/orders_db?charset=utf8&parseTime=True&loc=Local")
    if err != nil {
        return nil, err
    }
    fmt.Println("Database connection established")
    return db, nil
}

Le code ci-dessus se connecte à la base de données MySQL nommée "orders_db" et renvoie un pointeur vers la base de données ou une erreur si une erreur se produit.

  1. Créer une API de requête de commande

Maintenant, nous pouvons créer une API pour interroger les commandes des utilisateurs. Voici un exemple simple de gestionnaire de requêtes HTTP GET :

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

func GetOrders(c *gin.Context) {
    user_id := c.Query("user_id")
    db, err := ConnectDB()
    if err != nil {
        c.JSON(http.StatusInternalServerError, err.Error())
        return
    }
    defer db.Close()

    var orders []Order
    db.Where("user_id=?", user_id).Find(&orders)
    c.JSON(http.StatusOK, orders)
}

Le code ci-dessus demandera des commandes pour un ID utilisateur spécifique et renverra les résultats sous forme de réponse JSON.

  1. Créer des cas de test

Enfin, nous devons écrire quelques cas de test pour notre fonctionnalité de requête de commande. Voici un cas de test simple :

import (
    "encoding/json"
    "github.com/stretchr/testify/assert"
    "net/http"
    "net/http/httptest"
    "testing"
)

func TestGetOrders(t *testing.T) {
    router := gin.Default()
    router.GET("/orders", GetOrders)

    w := httptest.NewRecorder()
    req, _ := http.NewRequest("GET", "/orders?user_id=1", nil)
    router.ServeHTTP(w, req)

    assert.Equal(t, http.StatusOK, w.Code)

    var orders []Order
    json.Unmarshal(w.Body.Bytes(), &orders)
    assert.Equal(t, 1, len(orders))
}

Le code ci-dessus utilise les bibliothèques testify et httptest pour tester si notre API renvoie comme prévu.

Résumé

Dans cet article, nous avons présenté comment utiliser le langage Go pour développer une fonction de requête de commande simple et fourni des exemples de code détaillés. Vous pouvez suivre ces étapes pour développer votre propre fonctionnalité de requête de commande, en la modifiant et en la personnalisant selon vos besoins.

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