Comment utiliser le langage Go pour rédiger le module de feedback utilisateur dans le système de cuisson en porte-à-porte ?
Avec l'essor des services à emporter et en porte-à-porte, de plus en plus d'utilisateurs choisissent de déguster de délicieux plats à la maison. Pour les services de cuisine en porte-à-porte, les commentaires des utilisateurs sont particulièrement importants, car ils peuvent contribuer à améliorer la qualité du service et la satisfaction des utilisateurs. Cet article explique comment utiliser le langage Go pour écrire le module de commentaires des utilisateurs dans le système de cuisson porte-à-porte et fournit des exemples de code spécifiques.
Tout d'abord, nous devons concevoir une base de données pour stocker les informations des commentaires des utilisateurs. Supposons que nous ayons une table nommée feedback, qui contient les champs suivants : id (clé primaire à incrémentation automatique), userId (ID utilisateur), content (contenu du feedback), createTime (heure de création).
Utilisez l'instruction SQL suivante pour créer la table de commentaires :
CREATE TABLE feedback (
id INT AUTO_INCREMENT PRIMARY KEY, userId INT NOT NULL, content TEXT NOT NULL, createTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Assurez-vous que l'environnement de langage Go a été installé et que GOPATH est défini.
Exécutez la commande suivante dans la ligne de commande pour créer un nouveau module Go :
go mod init feedback
Créez un fichier appelé db dans le répertoire racine du fichier .go du projet et ajoutez le code suivant :
package main
import (
"database/sql" "fmt" _ "github.com/go-sql-driver/mysql"
)
func ConnectDB() (*sql.DB, erreur) {
db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/feedback") if err != nil { return nil, fmt.Errorf("failed to connect to database: %v", err) } err = db.Ping() if err != nil { return nil, fmt.Errorf("failed to ping database: %v", err) } return db, nil
}
replace "root:password " Remplacez " " par le nom d'utilisateur et le mot de passe de votre base de données, et " feedback " par le nom de la base de données que vous avez créée.
Créez un fichier appelé feedback.go dans le répertoire racine du projet et ajoutez le code suivant :
package main
import (
"database/sql" "fmt" "time"
)
type Feedback struct {
ID int UserID int Content string CreateTime time.Time
}
func InsertFeedback(db sql.DB, feedback Feedback) erreur {
stmt, err := db.Prepare("INSERT INTO feedback(userId, content) VALUES(?, ?)") if err != nil { return fmt.Errorf("failed to prepare insert statement: %v", err) } defer stmt.Close() _, err = stmt.Exec(feedback.UserID, feedback.Content) if err != nil { return fmt.Errorf("failed to execute insert statement: %v", err) } return nil
}
func GetFeedbacks(db sql.DB) ([]Feedback, erreur) {
rows, err := db.Query("SELECT * FROM feedback") if err != nil { return nil, fmt.Errorf("failed to execute query: %v", err) } defer rows.Close() feedbacks := make([]*Feedback, 0) for rows.Next() { feedback := &Feedback{} err := rows.Scan(&feedback.ID, &feedback.UserID, &feedback.Content, &feedback.CreateTime) if err != nil { return nil, fmt.Errorf("failed to scan feedback: %v", err) } feedbacks = append(feedbacks, feedback) } return feedbacks, nil
}
ici A La structure des commentaires est définie pour représenter les informations de retour et fournit des méthodes pour insérer de nouveaux commentaires et obtenir tous les commentaires.
Créez un fichier nommé main.go dans le répertoire racine du projet et ajoutez le code suivant :
package main
import (
"encoding/json" "log" "net/http"
)
func main() {
db, err := ConnectDB() if err != nil { log.Fatalf("failed to connect to database: %v", err) } defer db.Close() http.HandleFunc("/feedback", func(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: feedbacks, err := GetFeedbacks(db) if err != nil { log.Printf("failed to get feedbacks: %v", err) http.Error(w, "Internal server error", http.StatusInternalServerError) return } json.NewEncoder(w).Encode(feedbacks) case http.MethodPost: var feedback Feedback err := json.NewDecoder(r.Body).Decode(&feedback) if err != nil { log.Printf("failed to decode feedback: %v", err) http.Error(w, "Bad request", http.StatusBadRequest) return } err = InsertFeedback(db, &feedback) if err != nil { log.Printf("failed to insert feedback: %v", err) http.Error(w, "Internal server error", http.StatusInternalServerError) return } w.WriteHeader(http.StatusCreated) default: http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) } }) log.Println("Server listening on :8000") log.Fatal(http.ListenAndServe(":8000", nil))
}
Une interface HTTP nommée /feedback est créée ici, qui prend en charge la méthode GET pour obtenir toutes les informations de retour et la méthode POST pour insérer de nouvelles informations de retour.
Exécutez la commande suivante dans la ligne de commande pour démarrer le service :
allez exécuter main.go
Maintenant, vous pouvez utiliser Postman ou d'autres clients HTTP pour envoyer des requêtes GET et POST afin de tester votre service porte-à-porte Le module de retour d'information des utilisateurs du système de parabole est désormais disponible.
À travers les étapes ci-dessus, nous avons utilisé le langage Go pour écrire un simple module de commentaires des utilisateurs dans le système de cuisson en porte-à-porte. Vous pouvez étendre et optimiser en fonction des besoins réels. J'espère que cet article vous aidera !
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!