Go 言語を使用して、訪問調理システムでユーザー フィードバック モジュールを作成するにはどうすればよいですか?

PHPz
リリース: 2023-11-01 16:36:33
オリジナル
1099 人が閲覧しました

Go 言語を使用して、訪問調理システムでユーザー フィードバック モジュールを作成するにはどうすればよいですか?

Go 言語を使用して、訪問調理システムのユーザー フィードバック モジュールを作成するにはどうすればよいですか?

テイクアウトや宅配サービスの普及により、自宅でおいしい料理を楽しむユーザーが増えています。宅配調理サービスでは、ユーザーからのフィードバックが特に重要であり、サービスの品質とユーザー満足度の向上につながります。この記事では、Go 言語を使用して訪問調理システムのユーザー フィードバック モジュールを作成する方法を紹介し、具体的なコード例を示します。

  1. データベースの設計と作成

まず、ユーザーのフィードバック情報を保存するデータベースを設計する必要があります。フィードバックという名前のテーブルがあり、次のフィールドが含まれているとします: 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
ログイン後にコピー

);

  1. Go 言語環境を構築する

Go 言語環境がインストールされ、GOPATH が設定されていることを確認してください。

  1. Go モジュールの作成

コマンド ラインで次のコマンドを実行して、新しい Go モジュールを作成します:

go mod init Facebook

  1. データベース接続の作成
#プロジェクトのルート ディレクトリに db.go という名前のファイルを作成し、次のコードを追加します:

package main

import (

"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
ログイン後にコピー

)

func ConnectDB() (*sql.DB, error) {

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
ログイン後にコピー

}

「root Replace」を置き換えます:password" にはデータベースのユーザー名とパスワードを入力し、"フィードバック" には作成したデータベースの名前を入力します。

    フィードバック モデルの作成
プロジェクトのルート ディレクトリに Facebook という名前のファイルを作成し、次のコードを追加します:

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) エラー {

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) ([]フィードバック、エラー) {

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
ログイン後にコピー

}

フィードバック構造は、フィードバック情報を表すためにここで定義され、新しいフィードバックを挿入し、すべてのフィードバックを取得するためのメソッドを提供します。

    HTTP インターフェイスの作成
プロジェクトのルート ディレクトリに main.go という名前のファイルを作成し、次のコードを追加します:

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))
ログイン後にコピー
}

/feedback という名前のファイルがここに作成されます HTTP インターフェイスすべてのフィードバック情報を取得するための GET メソッドと、新しいフィードバック情報を挿入するための POST メソッドをサポートします。

#サービスを開始します
  1. #コマンド ラインで次のコマンドを実行してサービスを開始します:
go run main.go

これで、Postman またはその他の HTTP クライアントを使用して GET リクエストと POST リクエストを送信し、家庭用調理システムのユーザー フィードバック モジュールをテストできます。

上記の手順を通じて、Go 言語を使用して、訪問調理システムの簡単なユーザー フィードバック モジュールを作成しました。実際のニーズに応じて拡張および最適化できます。この記事がお役に立てば幸いです!

以上がGo 言語を使用して、訪問調理システムでユーザー フィードバック モジュールを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!