Cet article expliquera comment utiliser le langage Go pour écrire un module d'enregistrement d'utilisateur pour un système de cuisine porte-à-porte. Nous couvrirons le processus métier de base de l'enregistrement des utilisateurs et fournirons des exemples de code.
1. Analyse des exigences
Tout d'abord, nous devons comprendre les étapes de base que les utilisateurs doivent effectuer dans notre système. Le module d'enregistrement des utilisateurs doit répondre aux exigences suivantes :
2. Sélection de la technologie
Le langage Go est un langage de programmation avec d'excellentes performances et une syntaxe simple. Il est actuellement largement utilisé dans le développement côté serveur, programmation réseau et autres domaines. Par conséquent, nous choisissons d'utiliser le langage Go pour écrire ce module d'enregistrement des utilisateurs.
Dans le même temps, nous devons également utiliser l'API fournie par le fournisseur de services SMS pour implémenter la fonction de notification SMS. Dans cet article, nous utiliserons le service Alibaba Cloud SMS pour effectuer cette tâche.
3. Conception de la base de données
Avant de commencer à écrire du code, nous devons concevoir une table de données pour gérer les informations utilisateur. Nous pouvons utiliser la base de données MySQL pour stocker les données utilisateur.
Ici, nous concevons une table de données nommée users
pour enregistrer les informations utilisateur. La structure de la table est la suivante : users
的数据表来保存用户信息,表结构如下:
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID', `username` varchar(20) NOT NULL COMMENT '用户名', `password` varchar(32) NOT NULL COMMENT '密码', `phone` varchar(20) NOT NULL COMMENT '手机号码', `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`), UNIQUE KEY `phone` (`phone`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
通过上面的SQL语句,我们创建了一个名为users
的数据表,并且定义了数据表中需要存储的字段。
四、编写代码
我们使用github.com/gin-gonic/gin
框架,它是一个轻量级的Web框架,可以帮助我们快速构建HTTP应用程序。
同时,我们使用github.com/aliyun/alibaba-cloud-sdk-go/sdk
来调用阿里云短信服务API。
在开始编写代码之前,我们需要在go.mod
文件中添加依赖信息:
require ( github.com/gin-gonic/gin v1.6.3 github.com/aliyun/alibaba-cloud-sdk-go/sdk v1.0.0 )
我们使用HTTP POST请求来提交用户注册信息。在router.go
文件中,我们可以定义一个/register
路由,并将其绑定到一个注册函数上。
package main import ( "net/http" "github.com/gin-gonic/gin" ) func main() { router := gin.Default() // 绑定注册函数 router.POST("/register", registerHandler) router.Run() } func registerHandler(c *gin.Context) { // TODO }
在registerHandler
func registerHandler(c *gin.Context) { // 获取请求参数 username := c.PostForm("username") password := c.PostForm("password") phone := c.PostForm("phone") // 参数校验 if username == "" || password == "" || phone == "" { c.JSON(http.StatusBadRequest, gin.H{ "code": http.StatusBadRequest, "message": "请求参数错误", }) return } // TODO: 更多参数校验操作 }
users
. code > table de données et définit les champs qui doivent être stockés dans la table de données. Introduire des dépendances
github.com/gin-gonic/gin
, qui est un framework Web léger qui peut nous aider à créer rapidement une application HTTP. github.com/aliyun/alibaba-cloud-sdk-go/sdk
pour appeler l'API du service Alibaba Cloud SMS. Avant de commencer à écrire du code, nous devons ajouter des informations de dépendance dans le fichier go.mod
: func registerHandler(c *gin.Context) { // 获取请求参数 username := c.PostForm("username") password := c.PostForm("password") phone := c.PostForm("phone") // 参数校验 if username == "" || password == "" || phone == "" { c.JSON(http.StatusBadRequest, gin.H{ "code": http.StatusBadRequest, "message": "请求参数错误", }) return } // 检查用户是否已存在 var user User if err := db.Where("username = ?", username).Or("phone = ?", phone).First(&user).Error; err == nil { c.JSON(http.StatusBadRequest, gin.H{ "code": http.StatusBadRequest, "message": "用户名或手机号已被注册", }) return } // TODO: 插入用户数据并发送短信通知 }
Nous utilisons HTTP POST demande de soumission des informations d’enregistrement de l’utilisateur. Dans le fichier router.go
, nous pouvons définir une route /register
et la lier à une fonction d'enregistrement.
import "github.com/aliyun/alibaba-cloud-sdk-go/services/dysmsapi" // 插入用户数据并发送短信通知 user := User{ Username: username, Password: utils.MD5(password), Phone: phone, } if err := db.Create(&user).Error; err != nil { c.JSON(http.StatusInternalServerError, gin.H{ "code": http.StatusInternalServerError, "message": "系统错误", }) return } // 调用阿里云短信API发送短信通知 client, _ := dysmsapi.NewClientWithAccessKey("cn-hangzhou", "AKID", "AKSECRET") request := dysmsapi.CreateSendSmsRequest() request.Scheme = "https" request.PhoneNumbers = phone request.SignName = "签名" request.TemplateCode = "模板ID" request.TemplateParam = `{"code": "123456"}` response, err := client.SendSms(request) if err != nil || !response.IsSuccess() { c.JSON(http.StatusInternalServerError, gin.H{ "code": http.StatusInternalServerError, "message": "短信发送失败", }) return } c.JSON(http.StatusOK, gin.H{ "code": http.StatusOK, "message": "注册成功", })
registerHandler
, nous devons obtenir le nom d'utilisateur, le mot de passe et le numéro de téléphone portable à partir des paramètres de la demande et les vérifier. 🎜rrreee🎜🎜Vérifiez si l'utilisateur existe déjà🎜🎜🎜Avant d'insérer des données dans la base de données, nous devons vérifier si le nom d'utilisateur et le numéro de téléphone portable ont été enregistrés. S'il a été enregistré, un message d'erreur sera renvoyé. 🎜rrreee🎜🎜Insérer les données utilisateur et envoyer une notification SMS🎜🎜🎜Enfin, nous devons insérer les données utilisateur dans la base de données et envoyer une notification SMS via l'API SMS Alibaba Cloud. 🎜rrreee🎜À ce stade, nous avons terminé l'écriture du module d'enregistrement des utilisateurs et pouvons le tester via des outils tels que Postman. 🎜🎜5. Résumé🎜🎜Dans cet article, nous avons utilisé le langage Go pour écrire un module d'enregistrement des utilisateurs pour le système de cuisson porte-à-porte. En utilisant l'API SMS d'Alibaba Cloud pour implémenter la fonction de notification SMS et en utilisant la base de données MySQL pour gérer les données utilisateur, un système complet d'enregistrement des utilisateurs peut être mis en œuvre. Si vous êtes intéressé par le développement du langage Go, vous pouvez aussi bien essayer d'utiliser ce projet pour un apprentissage plus approfondi. 🎜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!