当前位置: 首页 > news >正文

珠海易注册网站DW做的网站怎么弄兼容性

珠海易注册网站,DW做的网站怎么弄兼容性,移动端减肥网站模板,交易所源码文章目录 准备工作适宜人群项目信息 项目结构代码阅读主要模块代码主函数模块router 路由模块auth 授权模块数据库 修改文章请求分析其他依赖 总结 准备工作 适宜人群 初学 go 语法#xff0c;希望了解 go 项目的构建过程和方式。 项目信息 go-gin-example 项目是使用 gin… 文章目录 准备工作适宜人群项目信息 项目结构代码阅读主要模块代码主函数模块router 路由模块auth 授权模块数据库 修改文章请求分析其他依赖 总结 准备工作 适宜人群 初学 go 语法希望了解 go 项目的构建过程和方式。 项目信息 go-gin-example 项目是使用 gin 框架构建一个简易的 blog 服务包括对 blog 的增删改查操作以及 blog tag 的增删改查等。 代码仓库https://github.com/eddycjy/go-gin-example版本565e1a9395471e829abdb2201e00321c327626cd 第一次提交版本 项目结构 项目代码结构如下 conf 配置相关middleware 中间件models 数据库相关对象以及操作pkg 项目相关的模块包routers 路由相关main 主函数 代码阅读 主要模块代码 首先看一下整体项目中比较重要的模块包括 主函数、路由模块、授权模块、数据库模块。 主函数模块 func main() {router : routers.InitRouter()s : http.Server{Addr: fmt.Sprintf(:%d, setting.HTTPPort),Handler: router,ReadTimeout: setting.ReadTimeout,WriteTimeout: setting.WriteTimeout,MaxHeaderBytes: 1 20,}s.ListenAndServe() }主函数工作 初始化路由server 配置启动 router 路由模块 func InitRouter() *gin.Engine {r : gin.New()r.Use(gin.Logger())r.Use(gin.Recovery())gin.SetMode(setting.RunMode)r.GET(/auth, api.GetAuth)apiv1 : r.Group(/api/v1)apiv1.Use(jwt.JWT()){//获取标签列表apiv1.GET(/tags, v1.GetTags)//新建标签apiv1.POST(/tags, v1.AddTag)//更新指定标签apiv1.PUT(/tags/:id, v1.EditTag)//删除指定标签apiv1.DELETE(/tags/:id, v1.DeleteTag)//获取文章列表apiv1.GET(/articles, v1.GetArticles)//获取指定文章apiv1.GET(/articles/:id, v1.GetArticle)//新建文章apiv1.POST(/articles, v1.AddArticle)//更新指定文章apiv1.PUT(/articles/:id, v1.EditArticle)//删除指定文章apiv1.DELETE(/articles/:id, v1.DeleteArticle)}return r }主要工作 创建 gin 对象添加 Logger、Recovery 中间件 Logger 日志处理Recovery 异常捕获 设置 /auth 路径的处理器设置 /api/v1 group通过 JWT 进行授权验证设置 /api/v1 下各个请求的处理方式 auth 授权模块 type auth struct {Username string valid:Required; MaxSize(50)Password string valid:Required; MaxSize(50) }func GetAuth(c *gin.Context) {username : c.Query(username)password : c.Query(password)valid : validation.Validation{}a : auth{Username: username, Password: password}ok, _ : valid.Valid(a)data : make(map[string]interface{})code : e.INVALID_PARAMSif ok {isExist : models.CheckAuth(username, password)if isExist {token, err : util.GenerateToken(username, password)if err ! nil {code e.ERROR_AUTH_TOKEN} else {data[token] tokencode e.SUCCESS}} else {code e.ERROR_AUTH}} else {for _, err : range valid.Errors {logging.Info(err.Key, err.Message)}}c.JSON(http.StatusOK, gin.H{code : code,msg : e.GetMsg(code),data : data,}) }工作 获取用户 username password验证 username password 是否符合格式 符合通过 models 进行授权检查组装 data不符合打印错误日志 使用 JSON 格式返回 数据库 数据库信息的设置在 models 文件夹下主要包括 model 文件以及其他具体表文件。 model.go 模块通用参数、全局数据库对象、初始化方法数据库关闭方法article.go article 对象及其操作方法 重点看一下 model 文件。 var db *gorm.DBtype Model struct {ID int gorm:primary_key json:idCreatedOn int json:created_onModifiedOn int json:modified_on }func init() {var (err errordbType, dbName, user, password, host, tablePrefix string)sec, err : setting.Cfg.GetSection(database)if err ! nil {log.Fatal(2, Fail to get section database: %v, err)}dbType sec.Key(TYPE).String()dbName sec.Key(NAME).String()user sec.Key(USER).String()password sec.Key(PASSWORD).String()host sec.Key(HOST).String()tablePrefix sec.Key(TABLE_PREFIX).String()db, err gorm.Open(dbType, fmt.Sprintf(%s:%stcp(%s)/%s?charsetutf8parseTimeTruelocLocal, user, password, host, dbName))if err ! nil {log.Println(err)}gorm.DefaultTableNameHandler func (db *gorm.DB, defaultTableName string) string {return tablePrefix defaultTableName;}db.SingularTable(true)db.DB().SetMaxIdleConns(10)db.DB().SetMaxOpenConns(100) }func CloseDB() {defer db.Close() }组成部分 全局变量 db用于操作数据库Model 结构体各个数据库表的通用字段init 方法 closeDB 方法数据库初始化以及关闭方法 从中可知db 主要是通过使用 gorm 框架进行操作操作中需要设置数据库相关参数以及最大连接数。 models 下其他具体的数据库表信息在此不做赘述基本就是数据库表的 struct 定义以及相应操作下面贴出该项目涉及的三个数据库表及其字段。 type Article struct {ModelTagID int json:tag_id gorm:indexTag Tag json:tagTitle string json:titleDesc string json:titleContent string json:contentCreatedBy string json:created_byModifiedBy string json:modified_byState int json:state }type Tag struct {ModelName string json:nameCreatedBy string json:created_byModifiedBy string json:modified_byState int json:state }type Auth struct {ID int gorm:primary_key json:idUsername string json:usernamePassword string json:password }修改文章请求分析 主要模块已经了解后我们查看修改文章 api 的请求过程和具体实现。 请求 URL/articles/:id请求方法 PUT处理函数 v1.EditArticle 上述主要代码模块已经了解到 main 函数启动后会初始化路由路由中包含了「修改文章」请求的具体处理函数这里看看具体函数操作。 func EditArticle(c *gin.Context) {valid : validation.Validation{}id, _ : com.StrTo(c.Param(id)).Int()tagId, _ : com.StrTo(c.Query(tag_id)).Int()title : c.Query(title)desc : c.Query(desc)content : c.Query(content)modifiedBy : c.Query(modified_by)var state int -1if arg : c.Query(state); arg ! {state, _ com.StrTo(arg).Int()valid.Range(state, 0, 1, state).Message(状态只允许0或1)}valid.Min(id, 1, id).Message(ID必须大于0)valid.MaxSize(title, 100, title).Message(标题最长为100字符)valid.MaxSize(desc, 255, desc).Message(简述最长为255字符)valid.MaxSize(content, 65535, content).Message(内容最长为65535字符)valid.Required(modifiedBy, modified_by).Message(修改人不能为空)valid.MaxSize(modifiedBy, 100, modified_by).Message(修改人最长为100字符)code : e.INVALID_PARAMSif ! valid.HasErrors() {if models.ExistArticleByID(id) {if models.ExistTagByID(tagId) {data : make(map[string]interface {})if tagId 0 {data[tag_id] tagId}if title ! {data[title] title}if desc ! {data[desc] desc}if content ! {data[content] content}data[modified_by] modifiedBymodels.EditArticle(id, data)code e.SUCCESS} else {code e.ERROR_NOT_EXIST_TAG}} else {code e.ERROR_NOT_EXIST_ARTICLE}} else {for _, err : range valid.Errors {logging.Info(err.Key, err.Message)}}c.JSON(http.StatusOK, gin.H{code : code,msg : e.GetMsg(code),data : make(map[string]string),}) }// models article.go func EditArticle(id int, data interface {}) bool {db.Model(Article{}).Where(id ?, id).Updates(data)return true }工作 参数获取设置校验规则并进行校验 校验成功 文章是否已经存在 是构建 data 参数通过 models EditAriticle 修改具体修改逻辑找到主键等于 id 的数据并通过 update 进行更新。否设置文章不存在错误码 校验失败 打印错误日志 JSON 响应 其他依赖 go-ini 库 该项目通过 ini 文件进行配置管理go-ini 是 Go 语言中用于操作 ini 文件的第三方库。 beego 另一个 go web 框架项目中主要使用了 beego 的vaild 功能 gorm go ORM 框架 go-vendor 该项目第一次提交为 18 年通过 vendor 来管理依赖现在 go mod 诞生后这种方式已被放弃 总结 该项目第一版提交大体上完成了 blog 项目所需的基本功能在目录结构上也相对清晰。 不足 返回信息的 Code、Msg 对象设计比较一般。每次响应需要自己构建响应格式{codemsgdata}。配置管理相对粗糙直接读取配置文件而不是通过 global 统一管理调度。
http://www.hkea.cn/news/14523314/

相关文章:

  • 网站建设项目报告总结商家入驻的商城平台
  • 哪个网站可以悬赏做图视频软件观看免费高清下载
  • 高端手机网站 制作公司wordpress 侧边悬浮框
  • 微网站建设公司首选公司一款可做引流的网站源码
  • 注册网站步骤成都建设局官方网站
  • 做网站怎么返回首页wordpress在线阅读主题
  • 企业网站导航设计重庆网站建设方案书
  • 服务器网站管理助手中国联合网络通信有限公司
  • 俄语网站建站公司网站主页模板
  • 网站开发谢辞上海一网通办官网
  • 石家庄校园兼职网站建设洪湖网站建设
  • 选择网站做友情链接的标准一般是创业做app哪个网站好
  • 网站营销软文注册百度账号免费
  • 网站索引量高端品牌衣服排行榜前十名
  • 仿淘宝商城网站开源系统精密科技东莞网站建设
  • 有了域名和主机怎么做网站百度教育官网登录入口
  • 长沙 网站设计 公司价格个人网站要不要备案
  • 酒店类网站开发策略陕西渭南富平建设局网站
  • 做招聘网站毕业设计学习html5的网站
  • 网站制作一般要几天简单asp网站源码
  • 个人做电影网站有什么风险企业logo设计创意
  • 做网站都可以做什么深圳h5网站建设
  • 建设网站需要用到哪些软件产品如何做网站推广
  • 网站怎么做mip技术wordpress导出导入
  • 汉中专业网站建设公司本地wordpress后台很慢
  • 网站收录提交入口遵化手机网站设计
  • 深圳专业网站设计公司哪家好网络营销题库及答案2020
  • 中美网站建设差异房产网南京
  • 微网站建设方向重庆做网站及优化报价
  • 自己做的网站怎么放图片酒仙网技术开发与网站建设方面