基于 gin 的 restful api 开发框架 gin-restful

MIT
Google Go
跨平台
2020-01-07
o0无忧亦无怖

【年终提升】2019尾声,来 OSC·年终盛典收割技术干货,get新技能!>>>

# gin http restful项目生成

# 快速入门 
    
    go version >  1.2(应用go mod)
    
    git clone https://github.com/go-libraries/gin-restful
    
    cd gin-restful
   
    chmod +x ./build.sh
    
    $GOBIN/createGinProject  -package=项目名 -path=项目路径
    
# 生成项目基本结构

```go
-base
  基础文件
-config
  config.ini
-handlers
  http处理回调
-logs
  日志文件目录
-models
  模型文件
-processes
  可以理解为控制器对象
-routers
  路由文件
go.mod
main.go
Readme.md
```

# 参数详解

```go
Usage of createMangoProject:
  -dsn string
        connection info names dsn
  -h    this help
  -help
        this help
  -package string
        package name use all project
  -path string
        project build in this path
  -port string
        port
```

# 二次开发详解

## 控制器

1. 可以在services中书写新的控制器

```go
type UserSaveService struct {
   base.Controller
   Account *UserSaveRequest
}
func (u *UserSaveService) Decode() base.IError {
    // 解析 输入字段 如下
   u.Account = &UserSaveRequest{&models.UserAccount{}, ""}
   if bt, err := u.Ctx.GetRawData(); err == nil {
      if err := json.Unmarshal(bt, u.Account); err != nil {
         return base.NewError(err)
      }
   } else {
      return base.NewError(err)
   }

   return nil
}

func (u *UserSaveService) Process() base.IError {
    //todo:执行业务过程
   return nil
}
```

2. 可以在controllers中注入执行方法

```go
func SaveUser(c *gin.Context) {
   p := &base.Controller{}
   p.ServiceFun = func(u *base.DefaultService) base.IError {
      u.Data = "hello world"
      return nil
   }
   base.RunService(p, c)
}
```

## 路由

路由可以开发二次中间件功能
```go
package routers

import (
   "github.com/gin-gonic/gin"
   "time"
   "{{package}}/base"
)

type Route struct {
   Name        string
   Method      string
   Path        string
   HandlerFunc gin.HandlerFunc
}

func calTime(fn func(c *gin.Context)) func(c *gin.Context) {
   return func(c *gin.Context) {
      start := time.Now()
      fn(c)
      base.Log.Printf("Done in %v (%s %s)\n", time.Since(start), c.Request.Method, c.Request.URL.Path)
   }
}

func init() {

   //Router.GET("/", func(c *gin.Context) {
   // time.Sleep(5 * time.Second)
   // c.String(http.StatusOK, "Welcome Gin Server")
   //})

   for _, route := range getUserRoutes() {
      handle := calTime(route.HandlerFunc)
      base.Gin.Handle(route.Method, route.Path, handle)
   }

   //todo: add other Routes
}
```

## 模型

默认使用gorm作为数据驱动,如果初始化--dsn项目不为空,会自动将该db下表生成模型并提供基础方法

外部库详见 [外部库-模型生成器](https://github.com/go-libraries/genModels)


## 文档

文档使用swagger进行配置,可以一键生成

详见
的码云指数为
超过 的项目
加载中

评论(1)

o0无忧亦无怖
o0无忧亦无怖 软件作者

暂无资讯

暂无问答

使用Go语言web框架gin-gonic构建RESTful API服务

使用Go语言web框架gin-gonic构建RESTful API服务

2018/09/27 15:18
894
0
SnippetsBox开发之路-创建接口(四)

先说下gin框架,其实通过对于golang的了解,很多人并不是很赞同使用框架,认为框架将其快速开发的优势破坏了,但是如果想要更好的开发和后续维护,那我们就需要对于项目文件进行管理,这时候...

2018/07/27 10:30
6
0
go web框架gin介绍和使用(一)

本文是gin介绍和使用的第一篇文章。 一、简要介绍 Gin的官方说明如下: Gin is a web framework written in Go (Golang). It features a martini-like API with much better performance, up...

2019/10/12 17:56
108
0
Golang Module的使用

前言: 在Golang1.11之前的版本中,官方没有提供依赖和包管理工具。开发者通常会使用vendor或者glide的方式来管理依赖(也有直接使用GOPATH多环境方式),而在Golang1.11之后官方终于出了名为g...

2019/09/07 14:35
23
0
Golang gin框架学习记录

参考文档: Golang 微框架 Gin 简介 https://www.jianshu.com/p/a31e4ee25305 一、使用 Govendor Use a vendor tool like Govendor go get govendor(安装) $ go get github.com/kardianos/...

2018/07/25 00:47
572
0
go 介绍与环境安装

go 介绍与环境安装 本文目标 学会安装 Go。 知道什么是 Go modules。 了解 Go modules 的小历史。 学会简单的使用 Go modules。 解 Gin,并简单跑起一个 Demo 准备环节 安装 Go Linux 首先,...

2019/12/11 20:31
2
0
深入Gin框架内幕(一)

Gin框架介绍 Gin是一个用 Go (Golang) 编写的 web 框架。它是一个类似于martini但性能更好的API框架,不同于谢大主导的Beegoweb框架,后者更像是Python语言中的Django框架,内部包含了开发一...

01/11 18:59
29
0
第一章 gin简介

gin 使用go编写的高性能的HTTP Web框架。它具有和Martini类似的API,但是性能却比Martini要高40倍。这是因为gin使用了Httprouter路由框架。 gin 的官网:https://gin-gonic.com github: htt...

2019/06/10 15:56
32
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部