zoukankan      html  css  js  c++  java
  • go web编程学习记录

    学习 https://segmentfault.com/a/1190000013297625的记录

    简单demo 

    package main
    

    import "github.com/gin-gonic/gin"

    func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
    c.JSON(200, gin.H{
    "message": "pong",
    })
    })
    r.Run() // listen and serve on 0.0.0.0:8080
    }



    配置文件模块: go-ini/ini

    目录结构:

    gin-blog/
    ├── conf
    ├── middleware
    ├── models
    ├── pkg
    ├── routers
    └── runtime
    • conf:用于存储配置文件
    • middleware:应用中间件
    • models:应用数据库模型
    • pkg:第三方包
    • routers 路由逻辑处理
    • runtime 应用运行时数据

    创建数据库及表

    API错误码包

    pkg/e/code.go

    package e
    

    const (
    SUCCESS = 200
    ERROR = 500
    INVALID_PARAMS = 400

    <span class="hljs-attr">ERROR_EXIST_TAG = 10001
    <span class="hljs-attr">ERROR_NOT_EXIST_TAG = 10002
    <span class="hljs-attr">ERROR_NOT_EXIST_ARTICLE = 10003
    
    <span class="hljs-attr">ERROR_AUTH_CHECK_TOKEN_FAIL = 20001
    <span class="hljs-attr">ERROR_AUTH_CHECK_TOKEN_TIMEOUT = 20002
    <span class="hljs-attr">ERROR_AUTH_TOKEN = 20003
    <span class="hljs-attr">ERROR_AUTH = 20004
    

    )

    pkg/e/msg.go

    package e
    

    var MsgFlags = map[int]string {
    SUCCESS : "ok",
    ERROR : "fail",
    INVALID_PARAMS : "请求参数错误",
    ERROR_EXIST_TAG : "已存在该标签名称",
    ERROR_NOT_EXIST_TAG : "该标签不存在",
    ERROR_NOT_EXIST_ARTICLE : "该文章不存在",
    ERROR_AUTH_CHECK_TOKEN_FAIL : "Token鉴权失败",
    ERROR_AUTH_CHECK_TOKEN_TIMEOUT : "Token已超时",
    ERROR_AUTH_TOKEN : "Token生成失败",
    ERROR_AUTH : "Token错误",
    }

    func GetMsg(code int) string {
    msg, ok := MsgFlags[code]
    if ok {
    return msg
    }

    <span class="hljs-keyword">return MsgFlags[ERROR]
    

    }


    model的处理

    go get -u github.com/jinzhu/gorm
    go get -u github.com/go-sql-driver/mysql

    models/models.go

    
    
    
    package models
    
    import (
        "log"
        "fmt"
    
        "github.com/jinzhu/gorm"
        _ "github.com/jinzhu/gorm/dialects/mysql"
    
        "gin-blog/pkg/setting"
    )
    
    var db *gorm.DB
    
    type Model struct {
        ID int `gorm:"primary_key" json:"id"`
        CreatedOn int `json:"created_on"`
        ModifiedOn int `json:"modified_on"`
    }
    
    func init() {
        var (
            err error
            dbType, 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:%s@tcp(%s)/%s?charset=utf8&parseTime=True&loc=Local", 
            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()
    }

  • 相关阅读:
    android_SurfaceView 画图
    android_activity_研究(二)
    android_sdcard读写(一)
    双缓冲的小程序
    C++运算符重载小程序
    再练
    菜鸟的第一个博客(用java写的个小文本框)
    LUCENE第一个小程序(有错)
    蜗牛在奔跑
    指定目录下的java文件存储到一个Txt文本文件中
  • 原文地址:https://www.cnblogs.com/yeyong/p/14821830.html
Copyright © 2011-2022 走看看