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
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.
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 :
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.
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.
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!