Go 言語を使用して、訪問調理システムのユーザー フィードバック モジュールを作成するにはどうすればよいですか?
テイクアウトや宅配サービスの普及により、自宅でおいしい料理を楽しむユーザーが増えています。宅配調理サービスでは、ユーザーからのフィードバックが特に重要であり、サービスの品質とユーザー満足度の向上につながります。この記事では、Go 言語を使用して訪問調理システムのユーザー フィードバック モジュールを作成する方法を紹介し、具体的なコード例を示します。
まず、ユーザーのフィードバック情報を保存するデータベースを設計する必要があります。フィードバックという名前のテーブルがあり、次のフィールドが含まれているとします: id (自動インクリメント主キー)、userId (ユーザー ID)、content (フィードバックのコンテンツ)、createTime (作成時間)。
次の SQL ステートメントを使用してフィードバック テーブルを作成します:
CREATE TABLE Facebook フィードバック (
id INT AUTO_INCREMENT PRIMARY KEY, userId INT NOT NULL, content TEXT NOT NULL, createTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Go 言語環境がインストールされ、GOPATH が設定されていることを確認してください。
コマンド ラインで次のコマンドを実行して、新しい Go モジュールを作成します:
go mod init Facebook
"database/sql" "fmt" _ "github.com/go-sql-driver/mysql"
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
"database/sql" "fmt" "time"
ID int UserID int Content string CreateTime time.Time
sql.DB ,フィードバック Feedback) エラー {
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
sql.DB) ([]フィードバック、エラー) {
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
"encoding/json" "log" "net/http"
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))
以上がGo 言語を使用して、訪問調理システムでユーザー フィードバック モジュールを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。