Golang implémente le repos
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)注册一个处理器函数。
- 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字段,这些字段将存储在数据库中。
- handlers/user.go
最后,我们将编写我们的处理器函数。我们将在handlers/user.go
中编写它们。下面是代码:
我们首先使用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 dansmodels/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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

OpenSSL, en tant que bibliothèque open source largement utilisée dans les communications sécurisées, fournit des algorithmes de chiffrement, des clés et des fonctions de gestion des certificats. Cependant, il existe des vulnérabilités de sécurité connues dans sa version historique, dont certaines sont extrêmement nocives. Cet article se concentrera sur les vulnérabilités et les mesures de réponse communes pour OpenSSL dans Debian Systems. DebianopenSSL CONNUTS Vulnérabilités: OpenSSL a connu plusieurs vulnérabilités graves, telles que: la vulnérabilité des saignements cardiaques (CVE-2014-0160): cette vulnérabilité affecte OpenSSL 1.0.1 à 1.0.1F et 1.0.2 à 1.0.2 Versions bêta. Un attaquant peut utiliser cette vulnérabilité à des informations sensibles en lecture non autorisées sur le serveur, y compris les clés de chiffrement, etc.

L'article explique comment utiliser l'outil PPROF pour analyser les performances GO, notamment l'activation du profilage, la collecte de données et l'identification des goulots d'étranglement communs comme le processeur et les problèmes de mémoire. COMMANDE: 159

L'article traite des tests d'unité d'écriture dans GO, couvrant les meilleures pratiques, des techniques de moquerie et des outils pour une gestion efficace des tests.

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

Chemin d'apprentissage du backend: le parcours d'exploration du front-end à l'arrière-end en tant que débutant back-end qui se transforme du développement frontal, vous avez déjà la base de Nodejs, ...

L'article discute de la gestion des dépendances des modules GO via Go.mod, couvrant les spécifications, les mises à jour et la résolution des conflits. Il met l'accent sur les meilleures pratiques telles que le versioning sémantique et les mises à jour régulières.

L'article discute de l'utilisation de tests basés sur la table dans GO, une méthode qui utilise un tableau des cas de test pour tester les fonctions avec plusieurs entrées et résultats. Il met en évidence des avantages comme une amélioration de la lisibilité, une duplication réduite, l'évolutivité, la cohérence et un
