Maison  >  Article  >  développement back-end  >  Golang implémente le repos

Golang implémente le repos

WBOY
WBOYoriginal
2023-05-22 12:08:071697parcourir

Golang est un langage de programmation efficace, rapide, sûr et fiable. Sa syntaxe légère, ses capacités de programmation simultanée et sa riche bibliothèque d'API en font un langage idéal pour créer des applications hautes performances et haute disponibilité. Dans cet article, nous présenterons comment utiliser Golang pour implémenter l'API RESTful.

Qu'est-ce que l'API RESTful ?

REST (Representational State Transfer) est un style architectural et un modèle de conception pour l'API Web. L'API RESTful est une API qui communique avec les clients à l'aide du protocole HTTP. Il permet d'utiliser des verbes HTTP (GET, POST, PUT, DELETE, etc.) pour effectuer des opérations (lire, créer, mettre à jour et supprimer des ressources) sur le serveur. Les API RESTful sont conçues pour l'évolutivité, l'extensibilité et la réutilisabilité.

Utilisez Golang pour implémenter l'API RESTful

Ci-dessous, nous utiliserons Golang pour implémenter une API RESTful simple. Cette API utilisera Gorilla Mux et Gorm pour gérer le routage et la base de données. Gorilla Mux est un puissant routeur et planificateur HTTP, et Gorm est une bibliothèque ORM simple et rapide.

Tout d'abord, nous devons installer ces bibliothèques. J'utilise go mod pour gérer les dépendances. Dans le répertoire racine du projet, ouvrez un terminal et entrez la commande suivante :

go mod init example.com/restful-api
go get github.com/gorilla/mux
go get github.com/jinzhu/gorm
go get github.com/go-sql-driver/mysql

Maintenant, nous pouvons commencer à écrire du code. Nous devons créer les fichiers suivants :

  • main.go
  • models/user.go
  • handlers/user.go# 🎜🎜 #
    main.go
main.go est notre fichier d'entrée. Nous enregistrerons les routes et démarrerons le serveur dans ce fichier. Voici le code :

package main

import (
    "log"
    "net/http"

    "example.com/restful-api/handlers"
    "github.com/gorilla/mux"
)

func main() {
    r := mux.NewRouter()

    r.HandleFunc("/users", handlers.GetUsers).Methods("GET")
    r.HandleFunc("/users", handlers.CreateUser).Methods("POST")
    r.HandleFunc("/users/{id}", handlers.GetUser).Methods("GET")
    r.HandleFunc("/users/{id}", handlers.UpdateUser).Methods("PUT")
    r.HandleFunc("/users/{id}", handlers.DeleteUser).Methods("DELETE")

    log.Fatal(http.ListenAndServe(":8080", r))
}
main.go是我们的入口文件。我们将在这个文件中注册路由和启动服务器。下面是代码:

package models

import "github.com/jinzhu/gorm"

type User struct {
    gorm.Model
    Name  string `gorm:"not null"`
    Email string `gorm:"not null;unique_index"`
    Age   int    `gorm:"not null"`
}

在这段代码中,我们使用mux.NewRouter()创建一个新的路由器,并为每个HTTP方法(GET、POST、PUT和DELETE)注册一个处理器函数。

  1. models/user.go

接下来,我们将定义我们的用户数据模型。我们将在models/user.go中编写它。下面是代码:

package handlers

import (
    "encoding/json"
    "fmt"
    "net/http"
    "strconv"

    "example.com/restful-api/models"
    "github.com/gorilla/mux"
    "github.com/jinzhu/gorm"
)

var db *gorm.DB

func init() {
    var err error
    db, err = gorm.Open("mysql", "{username}:{password}@tcp({host}:{port})/{database}")
    if err != nil {
        panic("failed to connect database")
    }
    db.AutoMigrate(&models.User{})
}

func GetUsers(w http.ResponseWriter, r *http.Request) {
    var users []models.User
    db.Find(&users)
    json.NewEncoder(w).Encode(users)
}

func GetUser(w http.ResponseWriter, r *http.Request) {
    params := mux.Vars(r)
    id, _ := strconv.Atoi(params["id"])
    var user models.User
    db.First(&user, id)
    json.NewEncoder(w).Encode(user)
}

func CreateUser(w http.ResponseWriter, r *http.Request) {
    var user models.User
    json.NewDecoder(r.Body).Decode(&user)
    db.Create(&user)
    json.NewEncoder(w).Encode(user)
}

func UpdateUser(w http.ResponseWriter, r *http.Request) {
    params := mux.Vars(r)
    id, _ := strconv.Atoi(params["id"])
    var user models.User
    db.First(&user, id)
    json.NewDecoder(r.Body).Decode(&user)
    db.Save(&user)
    json.NewEncoder(w).Encode(user)
}

func DeleteUser(w http.ResponseWriter, r *http.Request) {
    params := mux.Vars(r)
    id, _ := strconv.Atoi(params["id"])
    var user models.User
    db.Delete(&user, id)
    fmt.Fprintf(w, "User #%d deleted successfully", id)
}

在这个模型中,我们使用了Gorm的Model结构体。它包含了ID、CreatedAt和UpdatedAt字段等常见的数据库记录字段。我们定义了Name、Email和Age字段,这些字段将存储在数据库中。

  1. handlers/user.go

最后,我们将编写我们的处理器函数。我们将在handlers/user.go中编写它们。下面是代码:

rrreee

我们首先使用Gorm的gorm.Open()方法连接到数据库并自动迁移我们的用户模型。接下来,我们编写了五个处理器函数:GetUsers()GetUser()CreateUser()UpdateUser()DeleteUser()

GetUsers()函数从数据库中获取所有用户并将它们作为JSON响应发送回客户端。

GetUser()函数使用URL参数中的ID查找并返回单个用户信息。我们使用了mux.Vars()方法从请求中提取ID。

CreateUser()函数从请求正文中读取JSON数据,并将该用户信息存储到数据库中。

UpdateUser()函数从请求中读取JSON数据,并使用URL参数中的ID更新对应的用户信息。

DeleteUser()Dans ce code, nous utilisons mux.NewRouter() pour créer un nouveau routeur et créons un nouveau routeur pour chaque méthode HTTP (GET, POST , PUT et DELETE) pour enregistrer une fonction de gestionnaire.

    models/user.go

    Ensuite, nous définirons notre modèle de données utilisateur. Nous l'écrirons dans models/user.go. Voici le code :

    rrreee

    Dans ce modèle, nous utilisons la structure du modèle de Gorm. Il contient des champs d'enregistrement de base de données courants tels que les champs ID, CreatedAt et UpdatedAt. Nous avons défini les champs Nom, Email et Âge qui seront stockés dans la base de données. #🎜🎜#
      #🎜🎜#handlers/user.go#🎜🎜##🎜🎜##🎜🎜#Enfin, nous écrirons notre fonction de gestionnaire. Nous les écrirons dans handlers/user.go. Voici le code : #🎜🎜#rrreee#🎜🎜# Nous utilisons d'abord la méthode gorm.Open() de Gorm pour nous connecter à la base de données et migrer automatiquement notre modèle utilisateur. Ensuite, nous avons écrit cinq fonctions de processeur : GetUsers(), GetUser(), CreateUser(), UpdateUser( ) et DeleteUser(). #🎜🎜##🎜🎜#La fonction GetUsers() récupère tous les utilisateurs de la base de données et les renvoie au client sous forme de réponse JSON. #🎜🎜##🎜🎜#La fonction GetUser() utilise l'ID dans le paramètre URL pour rechercher et renvoyer des informations utilisateur individuelles. Nous avons utilisé la méthode mux.Vars() pour extraire l'ID de la requête. #🎜🎜##🎜🎜#La fonction CreateUser() lit les données JSON du corps de la requête et stocke les informations utilisateur dans la base de données. #🎜🎜##🎜🎜#La fonction UpdateUser() lit les données JSON de la requête et met à jour les informations utilisateur correspondantes en utilisant l'ID dans le paramètre URL. #🎜🎜##🎜🎜#La fonction DeleteUser() utilise l'ID dans le paramètre URL pour supprimer l'utilisateur correspondant de la base de données. #🎜🎜##🎜🎜#Nous avons désormais terminé tous les composants de notre API RESTful. Nous pouvons tester l'API sur le port local à l'aide d'outils comme Postman ou curl. #🎜🎜##🎜🎜#Summary#🎜🎜##🎜🎜#Golang est un langage puissant et facile à utiliser Il est très simple, rapide et efficace d'implémenter l'API RESTful à l'aide de Golang. Nous pouvons utiliser Gorilla Mux et Gorm pour gérer les opérations de routage et de base de données. Dans cet article, nous montrons comment créer une API RESTful à l'aide de Golang, sur la base d'un exemple simple. Grâce à cet article, les lecteurs peuvent rapidement comprendre et apprendre à utiliser Golang pour créer des API RESTful. #🎜🎜#

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!

Déclaration:
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
Article précédent:golang supprimer la variableArticle suivant:golang supprimer la variable