三、go微服务项目“商城项目实战开发”用户管理user-web端编写和登录校验

文章目录

  • 商城项目实战开发user-web端编写和用户登录校验
    • 03、user-web接口的gin的整合和路由的搭建
    • 04、gin如何调用grpc接口
    • 05 登录接口安全性检验
  • 05、用户服务整合微服务注册中心组件—Nacos
  • 06、用户服务整合微服务配置中心组件—Nacos

商城项目实战开发user-web端编写和用户登录校验

03、user-web接口的gin的整合和路由的搭建

这里实现的主要是用户管理的web-api,可以从server那边的接口获取到json参数信息。这里通过gin服务到grpc中获取,用户可以访问url接口(router中配置的)将json返回到前端页面

在这里插入图片描述

1.将user-srv目录下的一些文件复制到user-web中。

config文件下的Args.go\config.go

global文件下的global.go

initalize文件下的args.go\config.go\zap.go\rpc.go

resources文件下的application-dev.yaml\application-prod.yaml

utils文件下的md5.go

这些文件不做更改直接复制

2.gin的整合(已封装并整合路由)

package main

import (
	"fmt"
	"go.uber.org/zap"
	"kuangstudy-mall/apis/user-web/global"
	"kuangstudy-mall/apis/user-web/initialize"
)

func main() {
   
	// 解析命令行参数
	initialize.InitArgs()
	// 日志
	initialize.InitLogger()
	// 解析配置件
	initialize.InitializeConfig()
	// 初始化grpc的远程服务的链接
	initialize.InitClient()
	// gin 服务的封装和路由模块划分
	Router := initialize.InitWebRouter()
    
    
	err := Router.Run(fmt.Sprintf("%s:%d", *global.Args.IP, *global.Args.Port))
	zap.S().Infof("gin服务端口是:%d,启动了", *global.Args.Port)
	if err != nil {
   
		zap.S().Panicf("gin服务端口是:%d,启动失败了", *global.Args.Port)
	}
}

Router := initialize.InitWebRouter() 里面封装有gin框架

initialize文件下router

package initialize

import (
	"github.com/gin-gonic/gin"
	"kuangstudy-mall/apis/user-web/router"
	"net/http"
)

func InitWebRouter() *gin.Engine {
	// 开始整合ginweb框架
	Router := gin.Default()
    //初始一个页面测试
	Router.GET("/ping", func(context *gin.Context) {
		context.JSON(http.StatusOK, "pong")
	})

	// 配置跨域,身份鉴权

    
	// 进行路由组的定义
	//总路由
	routerGroup := Router.Group("/api/v1")
	//用户组
	router.InitUserRouter(routerGroup)
	//管理组
	router.InitUserSMSRouter(routerGroup)
	return Router
}

router文件下的路由划分

package router

import (
	"github.com/gin-gonic/gin"
	"kuangstudy-mall/apis/user-web/api"
)

func InitUserRouter(RouterGroup *gin.RouterGroup) {
   
	userRouter := RouterGroup.Group("/user")
	{
   
		userRouter.GET("/list", (&api.UserApi{
   }).FindUserList)
		userRouter.GET("/info/mobile", (&api.UserApi{
   }).GetUserInfoByMobile)
		userRouter.GET("/info/id", (&api.UserApi{
   }).GetUserInfoById)
		userRouter.GET("/info/:id", (&api.UserApi{
   }).GetUserInfoById2)
		userRouter.POST("/toLogin", (&api.UserApi{
   }).ToLogin)
		userRouter.POST("/reg", (&api.UserApi{
   }).Reg)
	}
}

router文件下的sms路由划分

package router

import (
	"github.com/gin-gonic/gin"
	"kuangstudy-mall/apis/user-web/api"
)

func InitUserSMSRouter(RouterGroup *gin.RouterGroup) {
   
	smsRouter := RouterGroup.Group("/sms")
	{
   
		smsRouter.GET("/list", (&api.UserApi{
   }).FindUserList)
		smsRouter.GET("/info/mobile", (&api.UserApi{
   }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/684158.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c#vb代码互转工具

下载地址: https://download.csdn.net/download/wgxds/88979921

做电化学研究如何发表Angew Chemie,案例分析

✨【元素魔方学术俱乐部】✨ 👩‍🏫👨‍🏫我们创建了一个学术交流群 给全国各地以及各种研究方向的硕博 和老师们提供一个交流的平台📚🧪 感兴趣的话欢迎加入 📲本公众号中回复“社群” 会自动发…

Python for循环 使用两个变量

https://geek-docs.com/python/python-ask-answer/336_python_for_loop_with_two_variables.html 一、使用zip()函数进行迭代 zip()函数可以将两个或多个可迭代对象打包成一个元组序列。 fruits [apple, banana, orange] prices [0.5, 0.3, 0.4]for fruit, price in zip(f…

基于springboot实现社区养老服务系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现社区养老服务系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本社区养老服务系统就是在这样的大环境下诞生,其可以帮助…

ubuntu top命令的参数和快捷键

命令选项 -1 单个、所有cpu信息切换 top -1-b 批处理 top -b > top.txt这将保存top命令的输出到文件,直到手动终止或关机。所以使用这个命令要注意和其他命令配合,否则文件速度增长会很快。 在文件中,将会重复输入top命令。 -c 切换命…

vulnhub靶机实战_DC-2

下载 靶机下载链接汇总:https://download.vulnhub.com/使用搜索功能,搜索dc类型的靶机即可。本次实战使用的靶机是:DC-2下载链接:https://download.vulnhub.com/dc/DC-2.zip 启动 下载完成后,打开VMware软件&#xf…

如何理解与学习数学分析——第二部分——数学分析中的基本概念——第5章——序列

第2 部分:数学分析中的基本概念 (Concepts in Analysis) 5. 序列(Sequences) 本章介绍了序列属性,例如单调性、有界性和收敛性,使用图表和示例来解释这些属性,并演示如何在各种证明中使用它们的定义。讨论了趋于无穷大的序列出…

神经网络 torch.nn---Containers

torch.nn — PyTorch 2.3 documentation torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) nn是Neural Network的简称,帮助程序员方便执行如下的与神经网络相关的行为: (1)创建神经网络 (2)训练…

项目部署服务器--浏览器拒绝访问问题

一、检查自己的环境 是本地环境、还是虚拟环境 当您使用 Gunicorn 启动 Flask 应用并监听 0.0.0.0:5000 时,您的 Flask 应用已经可以在服务器上运行并通过该端口提供服务了。但是,0.0.0.0 是一个特殊的 IP 地址,它表示“所有可用的网络接口”…

全球AI新闻速递6.4

1.港大&百度:发布首个智慧城市大模型UrbanGPT。 2.科大讯飞:讯飞星火 V4.0 正在训练中,对标GPT-4o产品在研发中。 3.阿里巴巴与世卫组织达成战略合作,全球推广达摩院 AI 癌症筛查技术。 4.赛迪顾问研究:2026 年…

LINUX系统编程:信号(2)

目录 2.信号的保存 2.1信号保存的基本概念 2.2信号在哪里保存的?怎么保存的? 2.3处理信号的三张表 2.4三张表的匹配操作和系统调用接口 2.4.1sigprocmask 2.4.2sigemptyset 2.4.3sigfillset 2.4.4sigaddset&&sigdelset 2.4.5sigismembe…

代码随想录 day 30

回溯总结: 相当于暴力for循环,其目的用递归控制for循环嵌套的数量。当剪枝时,就可以使得嵌套数量减少。把回溯问题抽象一颗树比较好懂。并且使得代码更简洁。 对于组合问题,什么时候需要startIndex呢? 在一个集合求组合…

awdawdawd

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行&am…

Java+前端+Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码

Java前端Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码 UWB定位系统由硬件定位设备、定位引擎和应用软件组成。该定位系统应用软件支持PC端和移动端访问,并提供位置实时显示、历史轨迹回放、人员考勤、电子围栏、行为分析、智能巡检等功能…

深度学习中torch.max函数的作用

文章目录 解释代码举例 解释 torch.max 是 PyTorch 中的一个函数,用于在张量中沿指定维度计算最大值。它有两种用法: ① 如果只提供一个输入张量,则返回该张量中的最大值和对应的索引。     ② 如果提供两个输入张量,则返回两…

【管理咨询宝藏125】超大型集团组织架构设计方案报告

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏125】超大型集团组织架构设计方案报告 【格式】PDF版本 【关键词】人力咨询、组织架构设计、流程优化 【核心观点】 - 通过组织诊断看到&#x…

Python怎么发邮件不会被拦?如何设置信息?

Python发邮件的注意事项?Python发邮件需要哪些库? 使用Python发送电子邮件是一个常见的需求。然而,有时候邮件可能会被拦截,要确保发送的邮件不被拦截,需要一些技巧和注意事项。AokSend将介绍如何使用Python发送邮件&…

用友NC BeanShell远程命令执行(CNVD-2021-30167)漏洞复现

1.简介 用友NC是一款企业级管理软件,在大中型企业广泛使用。实现建模、开发、继承、运行、管理一体化的IT解决方案信息化平台。用友 NC bsh.servlet.BshServlet目录存在远程命令执行漏洞,可通过BeanShell 执行远程命令获取服务器权限。 貌似所有版本都存…

Python邮件群发有哪些步骤?如何批量发送?

Python邮件群发的注意事项?怎么使用Python群发邮件? 使用Python进行邮件群发,不仅可以自动化流程,还可以节省大量的时间和精力。AokSend将详细介绍使用Python进行邮件群发的步骤,并在过程中提供实用的建议和注意事项。…

【第7章】SpringBoot实战篇之用户详细信息

文章目录 前言一、获取用户详细信息1. ThreadLocalUtil2. LoginInceptor3. UserController14. 测试 二、更新用户基本信息1.ValidatedGroups2.User3. UserController14. service5. 测试1. 参数校验2. 更新测试 三、更新用户头像1. UserController12. 测试 四、更新用户密码1. U…