互助分享 golang接口 简单架构

来源:互联网 发布:党纪党规知敬畏 编辑:程序博客网 时间:2024/04/27 13:22

已经停药30天,目前情况良好,就是受凉后,颈椎难受,各种小毛病,自己也懒惰,现在开始做了点golang的接口,这样可以做HTML5的项目,好了 ,废话少说了,先说下接下来用哪些技术

     1. gin   之所以选择他,看性能很高,目前也算稳定,版本发布也不是很快, echo变化有些快

     2. seelog 日志输出  

  3. xorm  数据库操作  我只用纯sql

  4. config  配置文件使用  github.com/robfig/config

 

  可能使用java的习惯

  我的结构如下:

     huzhu

       |_action

       |_conf

         |_config.cfg

         |_seelog.xml

       |_models

         |_xxx.go

       |_service

         |_init.go

         |_xxx.Service.go

       |_utils

         |_conf

           |_conf.go

           |_init.go

         |_utils.go

       |_app.go

 

       目前结构如上

 

     service下的init.go

Java代码  收藏代码
  1. package service  
  2.   
  3. import (  
  4.     _ "github.com/go-sql-driver/mysql"  
  5.     "github.com/go-xorm/xorm"  
  6.     "github.com/go-xorm/core"  
  7.     log "github.com/cihub/seelog"  
  8.     "huzhu/utils/conf"  
  9. )  
  10.   
  11. var engine *xorm.Engine  
  12.   
  13. func InitDB() {  
  14.     defer log.Flush()  
  15.     cfg := conf.Config  
  16.     cfg.SetSection("DB")  
  17.     driverName,_ := cfg.String("driverName")  
  18.     dataSourceName,_ :=cfg.String("dataSourceName")  
  19.       
  20.     var err error  
  21.     engine, err = xorm.NewEngine(driverName,dataSourceName)  
  22.     if(err != nil) {  
  23.         log.Error("InitDB ===> ",err)  
  24.     }  
  25.     //最大连接数量  
  26.     engine.SetMaxConns(800)  
  27.     //最大闲置数量  
  28.     engine.SetMaxIdleConns(30)  
  29.     //打印SQL  
  30. //  engine.ShowSQL = true  
  31.     //打印SQL错误  
  32. //  engine.ShowErr = true  
  33.     //sta_开头的表  
  34.     tbMapper := core.NewPrefixMapper(core.SnakeMapper{}, "sta_")  
  35.     engine.SetTableMapper(tbMapper)  
  36. }  

 

  app.go

  

Java代码  收藏代码
  1. package main  
  2.   
  3. import (  
  4.     "net/http"  
  5.     "time"  
  6.     "github.com/gin-gonic/gin"  
  7.     log "github.com/cihub/seelog"  
  8.     "huzhu/action"  
  9.     "huzhu/service"  
  10.     "huzhu/utils/conf"  
  11. )  
  12. func init() {  
  13.     //加载配置文件  
  14.     conf.InitConf("conf/config.cfg")  
  15.     //数据库初始化  
  16.     service.InitDB()  
  17.     //初始化日志  
  18.     initLog()  
  19. }  
  20.   
  21. //初始化日志  
  22. func initLog() {  
  23.     logger, err := log.LoggerFromConfigAsFile("conf/seelog.xml")  
  24.     if err != nil {  
  25.         log.Error("解析日志配置文件失败", err)  
  26.         return  
  27.     }  
  28.     log.ReplaceLogger(logger)  
  29. }  
  30.   
  31.   
  32. func main() {  
  33.     //设置生产环境  
  34. //  gin.SetMode(gin.ReleaseMode)  
  35.     router := gin.Default()  
  36.     router.GET("/xxx.do", action.xxx)  
  37.       
  38.     s := &http.Server{  
  39.         Addr:           ":80",  
  40.         Handler:        router,  
  41.         ReadTimeout:    30 * time.Second,  
  42.         WriteTimeout:   30 * time.Second,  
  43.         MaxHeaderBytes: 1 << 20,  
  44.     }  
  45.     s.ListenAndServe()  
  46. }  

 

  以上简单配置,先到这里,后面会把一个demo发上来,大家自己试试,写的不好,请大家谅解。

 

   目前小主比较可怜,没人发表,只有自己默默的坚守,不管如何,希望可以帮助有需要的人,给自己加油...

   

   www.huzhu.me   

 

1 0
原创粉丝点击