Go 语言,开源服务端代码自动生成 框架 - EasyGoServer

Go 语言,开源服务端代码自动生成 框架 - EasyGoServer,第1张

概述EasyGoServer作者:林冠宏 / 指尖下的幽灵掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8博客:http://www.cnblogs.com/linguanh/GitHub : https://github.com/af913337456/联系方式 / Contact:[email protected] 概述---- 脚本介绍-------- Linux-------- Windows-------- Mac---- 使用流程---- 部分代码说明---- 开源地址概述一个能够仅仅依赖你创建好的 sql 文件,就能 自动帮你生成基础服务端框架代码 的 go server 框架。包含有:1,基础的 增删改查2,拓展性强的API3,客户端的数据传入 与 服务端的输出 全部依赖 struct例如你的一个输入结构体 inputStruct 设置为type inputStruct struct {Id int64 `json:"id" nullTag:"1"` // nullTag==1 指明 id 必须要求在客户端传入 {"id":123}Name string `json:"name" nullTag:"0"` // ==0 指明 name 在客户端输入的时候可以不必要}对应上例,客户端输入的 json : {"id":666, "name":"lgh"}当你在使用 select 的时候,你的 sql 如果是这样的:select User.id , User.age from User那么你的对应输出结构体 outputStruct 应该是:type inputStruct struct {Id int64 `json:"id"`Age int64 `json:"age"`}4,真正需要你写的代码极少,例如第三点的例子,你要写的就那么多,其中默认的 struct 会自动帮你生成脚本介绍根据 sql 文件,自动生成代码文件,包含有 struct.go,每张表对应生成一个包含有增删改查的基础方法文件one_key_create_code根据内置的 makefile 或者 .bat 编译并运行默认的 go server 程序,注意是默认的make_serverLinuxone_key_create_code.shmake_server.shMakefileWindowsone_key_create_code.batmake_server.batMac参照 linux 的使用流程1,在你的 服务器 安装 mysql 或者 mariadb2,编写好的你的 sql 文件,可以参照我源码里面的 this.sql3,运行步骤2编写好的 sql 文件4,修改 sql_2_api.go 里面 main 内的 sql 文件名称5,运行 one_key_create_code 脚本,成功后会在同级目录生成下面文件,记得刷新目录struct.go,里面包含注释规范对应你 sql 文件里面的表名称生成的函数文件,格式:func_表名称.go6,自己写好,main.go 或者 使用我提供的默认 LghSampleMain.go,在里面 添加你自己的路由router.HandleFunc("/insert",insert_luser_sample).Methods("POST")router.HandleFunc("/select",select_luser_sample).Methods("GET")router.HandleFunc("/update",update_luser_sample).Methods("POST")router.HandleFunc("/delete",delete_luser_sample).Methods("POST")7,配置好 conf.json 文件,我里面有例子// Host 是绝对路径// Port 是要被监听的端口{"Host": "127.0.0.1","Port": ":8884","FilePort":":8885","DbName":"database","DbUser":"root","DbPw":"123456","DbPort":"3306"}8,现在执行 make_server 脚本,观察控制台的输出,即可。部分代码说明核心的参数结构体type LghRequest struct {w http.ResponseWriterr *http.Request// 标记使用,当前的方法名称funcName string// 输入的结构体,与客户端输入的 json 成对应关系inputStruct interface{}// 自定义 slices 的回调,方便你做参数处理,返回 true 意味着此次 *** 作终止,例如 updateslicesCallBack func(slices []interface{}) bool// 根据传入的 jsonObj 生成的 slices 来回调,方法生成自定义 sqlgetSqlCallBack func(slices []interface{},inputStruct interface{}) string}例子方法1,演示不需要参数的形式/** 演示不需要参数的形式 */func update_0(w http.ResponseWriter,r *http.Request) {request := LghRequest{w,r,"update_luser",nil, /** nil 表示没输入结构体 */func(slices *[]interface{}) bool{return false},func(slices *[]interface{},inputStruct interface{}) string {return "update LUser set u_user_id='444' where id='1'"}}updateDataByStruct(request)}2,演示当有参数输入的时候,参数仅做判断,但是不需要组合到 sql 的情况/** 演示当有参数输入的时候,参数仅做判断,但是不需要组合到 sql的情况 */func update_1(w http.ResponseWriter,r *http.Request) {type testS struct {Id int64 `json:"id" nullTag:"1"` // nullTag==1 指明 id 必须要求在客户端传入 {"id":123}}request := LghRequest{w,r,"update_luser",new (testS),func(slices []interface{}) bool{// 在这里对 slices 做你想做的 *** 作,增加或者删除等等if slices[0] == -1{return true /** 返回 true,终止插入,提示错误或者其它 */}slices = append(slices[:0], nil) /** 自己做完处理删除掉 */return false},func(slices []interface{},inputStruct interface{}) string {// 如果你想根据输入的 json 数据来特定生成 sql,那么就可以在这里使用 slices 来 *** 作return "update LUser set u_user_id='444' where id='2'"}}updateDataByStruct(request)}3,演示使用输入参数的情况/** 演示使用输入参数的情况 */func update_luser_sample(w http.ResponseWriter,r *http.Request) {type testS struct {Id int64 `json:"id" nullTag:"1"`}request := LghRequest{w,r,"update_luser",new (testS),func(slices []interface{}) bool{return false},func(slices []interface{},inputStruct interface{}) string {return "update LUser set u_user_id='444' where id=?" /** 对应 id */}}updateDataByStruct(request)}开源地址https://github.com/af913337456/EasyGoServer

<h1 ID="easygoserver">EasyGoServer

作者:林冠宏 / 指尖下的幽灵

掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8

博客:http://www.cnblogs.com/linguanh/

GitHub : https://github.com/af913337456/

联系方式 / Contact:[email protected]

EasyGoServer---- 概述---- 脚本介绍-------- linux-------- windows-------- Mac---- 使用流程---- 部分代码说明---- 开源地址

一个能够仅仅依赖你创建好的 sql 文件,就能 自动帮你生成基础服务端框架代码 的 go server 框架。包含有:

1,基础的 增删改查

2,拓展性强的API

3,客户端的数据传入 与 服务端的输出 全部依赖 struct

例如你的一个输入结构体 inputStruct 设置为
 type inputStruct struct {     ID   int64   `Json:"ID"   nullTag:"1"` // nullTag==1 指明 ID 必须要求在客户端传入 {"ID":123}     name string  `Json:"name" nullTag:"0"` // ==0 指明 name 在客户端输入的时候可以不必要 }

对应上例,客户端输入的 Json : {"ID":666,"name":"lgh"}

当你在使用 select 的时候,你的 sql 如果是这样的:select User.ID,User.age from User那么你的对应输出结构体 outputStruct 应该是:
 type inputStruct struct {     ID   int64  `Json:"ID"`        Age  int64  `Json:"age"`  }

4,真正需要你写的代码极少,例如第三点的例子,你要写的就那么多,其中默认的 struct 会自动帮你生成

<h3 ID="脚本介绍">脚本介绍

根据 sql 文件,自动生成代码文件,包含有 struct.go,每张表对应生成一个包含有增删改查的基础方法文件one_key_create_code

根据内置的 makefile 或者 .bat 编译并运行默认的 go server 程序,注意是默认的make_server

one_key_create_code.shmake_server.shMakefile

one_key_create_code.batmake_server.bat

参照 linux 的

1,在你的 服务器 安装 @R_502_5605@ 或者 mariadb

2,编写好的你的 sql 文件,可以参照我源码里面的 this.sql

3,运行步骤2编写好的 sql 文件

4,修改 sql_2_API.go 里面 main 内的 sql 文件名称

5,运行 one_key_create_code 脚本,成功后会在同级目录生成下面文件,记得刷新目录

struct.go,里面包含注释规范对应你 sql 文件里面的表名称生成的函数文件,格式:func_表名称.go

6,自己写好,main.go 或者 使用我提供的默认 LghSampleMain.go,在里面 添加你自己的路由

    router.HandleFunc("/insert",insert_luser_sample).Methods("POST")    router.HandleFunc("/select",select_luser_sample).Methods("GET")    router.HandleFunc("/update",update_luser_sample).Methods("POST")    router.HandleFunc("/delete",delete_luser_sample).Methods("POST")

7,配置好 conf.Json 文件,我里面有例子

// Host 是绝对路径// Port 是要被监听的端口{  "Host": "127.0.0.1","Port": ":8884","filePort":":8885","Dbname":"database","DbUser":"root","DbPw":"123456","DbPort":"3306"}

8,现在执行 make_server 脚本,观察控制台的输出,即可。

核心的参数结构体

type LghRequest struct {    w http.ResponseWriter    r *http.Request
// <a href="https://www.jb51.cc/tag/biaoji/" target="_blank" >标记</a><a href="https://m.jb51.cc/tag/shiyong/" target="_blank" >使用</a>,当前的<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" >方法</a><a href="https://www.jb51.cc/tag/mingcheng/" target="_blank" >名称</a>func<a href="https://m.jb51.cc/tag/name/" target="_blank" >name</a> string// 输入的结构体,与客户端输入的 <a href="https://m.jb51.cc/tag/Js/" target="_blank" >Js</a>on 成对应关系<a href="https://m.jb51.cc/tag/input/" target="_blank" >input</a>Struct  interface{}// <a href="https://www.jb51.cc/tag/zidingyi/" target="_blank" >自定义</a> s<a href="https://m.jb51.cc/tag/li/" target="_blank" >li</a>ces 的回调,<a href="https://m.jb51.cc/tag/fangbian/" target="_blank" >方便</a>你做<a href="https://m.jb51.cc/tag/canshu/" target="_blank" >参数</a>处理,返回 true 意味着此次 *** 作终止,例如 updates<a href="https://m.jb51.cc/tag/li/" target="_blank" >li</a>cesCallBack func(s<a href="https://m.jb51.cc/tag/li/" target="_blank" >li</a>ces []interface{}) bo<a href="https://m.jb51.cc/tag/ol/" target="_blank" >ol</a>// 根据传入的 <a href="https://m.jb51.cc/tag/Js/" target="_blank" >Js</a>onObj <a href="https://www.jb51.cc/tag/shengcheng/" target="_blank" >生成</a>的 s<a href="https://m.jb51.cc/tag/li/" target="_blank" >li</a>ces 来回调,<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" >方法</a><a href="https://www.jb51.cc/tag/shengcheng/" target="_blank" >生成</a><a href="https://www.jb51.cc/tag/zidingyi/" target="_blank" >自定义</a> <a href="https://www.jb51.cc/tag/sql/" target="_blank" >sql</a>get<a href="https://www.jb51.cc/tag/sql/" target="_blank" >sql</a>CallBack func(s<a href="https://m.jb51.cc/tag/li/" target="_blank" >li</a>ces []interface{},<a href="https://m.jb51.cc/tag/input/" target="_blank" >input</a>Struct interface{}) string

}

例子方法

1,演示不需要参数的形式

/** 演示不需要参数的形式 */func update_0(w http.ResponseWriter,r *http.Request)  {    request := LghRequest{        w,r,"update_luser",nil,/** nil 表示没输入结构体 */        func(slices *[]interface{}) bool{            return false        },func(slices *[]interface{},inputStruct interface{}) string {            return "update LUser set u_user_ID='444' where ID='1'"        }}    updateDataByStruct(request)}

2,演示当有参数输入的时候,参数仅做判断,但是不需要组合到 sql 的情况

/** 演示当有参数输入的时候,参数仅做判断,但是不需要组合到 sql的情况 */func update_1(w http.ResponseWriter,r *http.Request)  {    type testS struct {        ID int64 `Json:"ID" nullTag:"1"` // nullTag==1 指明 ID 必须要求在客户端传入 {"ID":123}    }    request := LghRequest{        w,new (testS),func(slices []interface{}) bool{            // 在这里对 slices 做你想做的 *** 作,增加或者删除等等            if slices[0] == -1{                return true /** 返回 true,终止插入,提示错误或者其它 */            }            slices = append(slices[:0],nil) /** 自己做完处理删除掉 */            return false        },func(slices []interface{},inputStruct interface{}) string {            // 如果你想根据输入的 Json 数据来特定生成 sql,那么就可以在这里使用 slices 来 *** 作            return "update LUser set u_user_ID='444' where ID='2'"        }}    updateDataByStruct(request)}

3,演示使用输入参数的情况

/** 演示使用输入参数的情况 */func update_luser_sample(w http.ResponseWriter,r *http.Request)  {    type testS struct {        ID int64 `Json:"ID" nullTag:"1"`    }    request := LghRequest{        w,func(slices []interface{}) bool{            return false        },inputStruct interface{}) string {            return "update LUser set u_user_ID='444' where ID=?" /** 对应 ID */        }}    updateDataByStruct(request)}

https://github.com/af913337456/EasyGoServer

总结

以上是内存溢出为你收集整理的Go 语言,开源服务端代码自动生成 框架 - EasyGoServer全部内容,希望文章能够帮你解决Go 语言,开源服务端代码自动生成 框架 - EasyGoServer所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1153365.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存