Maison > développement back-end > Golang > Comment mettre en œuvre un système de réservation d'hôtel en utilisant le langage Go et Redis

Comment mettre en œuvre un système de réservation d'hôtel en utilisant le langage Go et Redis

WBOY
Libérer: 2023-10-27 15:22:53
original
684 Les gens l'ont consulté

Comment mettre en œuvre un système de réservation dhôtel en utilisant le langage Go et Redis

Comment mettre en œuvre un système de réservation d'hôtel en utilisant le langage Go et Redis

Le système de réservation d'hôtel est l'un des composants essentiels de la gestion hôtelière moderne. Avec l'aide du langage Go et de Redis, nous pouvons facilement créer un système de réservation d'hôtel efficace et fiable. Cet article expliquera comment utiliser le langage Go pour développer un système de réservation d'hôtel entièrement fonctionnel et utiliser Redis pour le stockage et la gestion des données.

1. Préparation
Avant de commencer, vous devez vous assurer que le langage Go et Redis ont été correctement installés, et que vous avez une certaine compréhension de ces deux technologies. Dans le même temps, l'exemple de code de cet article est basé sur Gin, un framework Web courant dans le langage Go, il est donc recommandé d'installer Gin.

2. Structure du répertoire du projet
Tout d'abord, nous devons construire la structure du répertoire du projet du système de réservation d'hôtel. La structure du répertoire du projet est la suivante :

|-- main.go
|-- handlers
|   |-- hotel.go
|-- models
|   |-- hotel.go
|-- utils
|   |-- redis.go
Copier après la connexion

3. Connectez-vous à la base de données Redis
Nous devons créer le fichier redis.go dans le répertoire utils pour nous connecter à la base de données Redis. Le code est le suivant :

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数据库索引
    })
}
Copier après la connexion

4. Modèle d'hôtel
Dans le répertoire models, nous devons créer le fichier hotel.go et définir le modèle d'hôtel. Le code est le suivant :

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
}
Copier après la connexion

5. Fonction du processeur
Dans le répertoire des gestionnaires, nous devons créer le fichier hotel.go et définir les fonctions du processeur liées à l'hôtel. Le code est le suivant :

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)
}
Copier après la connexion

6. Configuration du routage
Dans main.go, nous devons configurer le routage. Le code est le suivant :

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")
}
Copier après la connexion

7. Tests
Après avoir démarré le projet, nous pouvons utiliser Postman ou d'autres outils de requête HTTP pour tester l'interface :

  1. Créer un hôtel :
    Méthode de requête : POST
    URL de requête : http ://localhost:8080/ hotels
    Corps de la demande :

    {
      "id": 1,
      "name": "酒店A",
      "description": "豪华五星级酒店",
      "price": 1000
    }
    Copier après la connexion
  2. Obtenir des informations sur l'hôtel en fonction de l'ID :
    Méthode de demande : GET
    URL de la demande : http://localhost:8080/hotels/1
  3. Résumé
    8. Grâce à l'introduction et à l'exemple de code de cet article, j'espère que les lecteurs pourront comprendre comment utiliser le langage Go et Redis pour créer un système de réservation d'hôtel. Bien sûr, il ne s’agit que d’un exemple simple, et les projets réels peuvent nécessiter davantage de fonctionnalités et d’optimisations. Cependant, en étudiant le contenu de cet article, vous pouvez maîtriser les idées et techniques de base pour appliquer le langage Go et Redis à des projets réels. J'espère que cet article vous sera utile pour vos études et votre travail !

    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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal