Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara melaksanakan sistem tempahan hotel menggunakan bahasa Go dan Redis

Cara melaksanakan sistem tempahan hotel menggunakan bahasa Go dan Redis

WBOY
WBOYasal
2023-10-27 15:22:53599semak imbas

Cara melaksanakan sistem tempahan hotel menggunakan bahasa Go dan Redis

Cara melaksanakan sistem tempahan hotel menggunakan bahasa Go dan Redis

Sistem tempahan hotel merupakan salah satu komponen teras pengurusan hotel moden. Dengan bantuan bahasa Go dan Redis, kami boleh membina sistem tempahan hotel yang cekap dan boleh dipercayai dengan mudah. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk membangunkan sistem tempahan hotel yang berfungsi sepenuhnya dan menggunakan Redis untuk penyimpanan dan pengurusan data.

1. Persediaan
Sebelum anda bermula, anda perlu memastikan bahawa bahasa Go dan Redis telah dipasang dengan betul, dan anda mempunyai pemahaman tertentu tentang kedua-dua teknologi ini. Pada masa yang sama, kod sampel dalam artikel ini adalah berdasarkan Gin, rangka kerja web biasa dalam bahasa Go, jadi disyorkan untuk memasang Gin.

2. Struktur direktori projek
Pertama, kita perlu membina struktur direktori projek sistem tempahan hotel. Struktur direktori projek adalah seperti berikut:

|-- main.go
|-- handlers
|   |-- hotel.go
|-- models
|   |-- hotel.go
|-- utils
|   |-- redis.go

3. Sambung ke pangkalan data Redis
Kita perlu mencipta fail redis.go dalam direktori utils untuk menyambung ke pangkalan data Redis. Kodnya adalah seperti berikut:

package utils

import (
    "github.com/go-redis/redis/v8"
)

var (
    Client *redis.Client
)

func init() {
    Client = redis.NewClient(&redis.Options{
        Addr:     "localhost:6379",
        Password: "", // Redis密码,没有密码则为空
        DB:       0,  // Redis数据库索引
    })
}

4. Model hotel
Dalam direktori model, kita perlu mencipta fail hotel.go dan mentakrifkan model hotel. Kodnya adalah seperti berikut:

package models

type Hotel struct {
    ID          uint   `json:"id"`
    Name        string `json:"name"`
    Description string `json:"description"`
    Price       int    `json:"price"`
}

func (h *Hotel) Save() error {
    err := utils.Client.HSet(ctx, "hotels", h.ID, h).Err()
    if err != nil {
        return err
    }
    return nil
}

func (h *Hotel) GetByID(id uint) (*Hotel, error) {
    hotelMap, err := utils.Client.HGetAll(ctx, "hotels").Result()
    if err != nil {
        return nil, err
    }
    hotel, ok := hotelMap[id]
    if !ok {
        return nil, errors.New("Hotel not found")
    }
    return hotel, nil
}

5. Fungsi pemproses
Dalam direktori pengendali, kita perlu mencipta fail hotel.go dan mentakrifkan fungsi pemproses berkaitan hotel. Kodnya adalah seperti berikut:

package handlers

import (
    "net/http"
    "strconv"

    "github.com/gin-gonic/gin"

    "github.com/yourusername/yourprojectname/models"
)

func CreateHotel(c *gin.Context) {
    var hotel models.Hotel
    if err := c.ShouldBindJSON(&hotel); err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }
    err := hotel.Save()
    if err != nil {
        c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
        return
    }
    c.JSON(http.StatusOK, gin.H{"message": "Hotel created successfully"})
}

func GetHotelByID(c *gin.Context) {
    id, err := strconv.ParseUint(c.Param("id"), 10, 32)
    if err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid hotel ID"})
        return
    }
    hotel, err := models.GetByID(uint(id))
    if err != nil {
        c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
        return
    }
    c.JSON(http.StatusOK, hotel)
}

6. Konfigurasi penghalaan
Dalam main.go, kita perlu mengkonfigurasi penghalaan. Kodnya adalah seperti berikut:

package main

import (
    "github.com/gin-gonic/gin"

    "github.com/yourusername/yourprojectname/handlers"
)

func main() {
    router := gin.Default()

    router.POST("/hotels", handlers.CreateHotel)
    router.GET("/hotels/:id", handlers.GetHotelByID)

    router.Run(":8080")
}

7. Menguji
Selepas memulakan projek, kita boleh menggunakan Posman atau alat permintaan HTTP lain untuk menguji antara muka:

  1. Buat hotel:
    Kaedah permintaan: POST
    Permintaan URL: http ://localhost:8080/ hotels
    Request body:

    {
      "id": 1,
      "name": "酒店A",
      "description": "豪华五星级酒店",
      "price": 1000
    }
  2. Dapatkan maklumat hotel berdasarkan ID:
    Kaedah permintaan: GET
    URL Permintaan: http://localhost:8080/hotels/1

8 Melalui pengenalan dan contoh kod artikel ini, saya harap pembaca dapat memahami cara menggunakan bahasa Go dan Redis untuk membina sistem tempahan hotel. Sudah tentu, ini hanyalah contoh mudah, dan projek sebenar mungkin memerlukan lebih banyak ciri dan pengoptimuman. Walau bagaimanapun, dengan mengkaji kandungan artikel ini, anda boleh menguasai idea dan teknik asas untuk menggunakan bahasa Go dan Redis pada projek sebenar. Saya harap artikel ini akan membantu anda untuk belajar dan bekerja!

Atas ialah kandungan terperinci Cara melaksanakan sistem tempahan hotel menggunakan bahasa Go dan Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn