gin-restful 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
gin-restful 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
gin-restful 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
gin-restful 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
gin-restful 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

# 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进行配置,可以一键生成

详见
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (2)

加载中
使用redis了吗
2020/08/22 04:03
回复
举报
o0无忧亦无怖软件作者
2020/01/07 21:16
回复
举报
更多评论
暂无内容
发表了博客
2018/12/11 00:23

Go实战--通过gin-gonic框架搭建restful api服务(github.com/gin-gonic/gin)

生命不止,继续 go go go !!! 先插播一条广告,给你坚持学习golang的理由: 《2017 软件开发薪酬调查:Go 和 Scala 是最赚钱的语言》 言归正传! 之前写过使用golang实现简单的restful api相关的博客: Go实战–实现简单的restful api(The way to go) 其中,使用了github.com/gorilla/mux,今天要跟大家介绍的是gin-gonic/gin。 gin-gonic/gin 介绍: Gin is a HTTP web framework written in Go (Golang). It features a Mart...

0
0
发表了博客
2018/06/29 17:24

Gin实战:Gin+Mysql简单的Restful风格的API

我们已经了解了Golang的Gin框架。对于Webservice服务,restful风格几乎一统天下。Gin也天然的支持restful。下面就使用gin写一个简单的服务,麻雀虽小,五脏俱全。我们先以一个单文件开始,然后再逐步分解模块成包,组织代码。 Hello World 使用Gin的前提是安装,我们需要安装gin和mysql的驱动,具体的安装方式就不在赘述。 创建一个文件夹用来为项目,新建一个文件main.go: ☁ newland tree . └── main.go main.go pack...

0
0
发表了博客
2018/07/04 10:09

Gin实战:Gin+Mysql简单的Restful风格的API(二)

上一篇介绍了Gin+Mysql简单的Restful风格的API,但代码放在一个文件中,还不属于restful风格,接下来将进行进一步的封装。 目录结构 ☁ gin_restful2 tree . ├── api │ └── users.go ├── db │ └── mysql.go ├── main.go ├── models │ └── users.go └── router.go api文件夹存放我们的handler函数,用于逻辑处理,models文件夹用来存放我们的数据模型。 myql.go的包代码如下: pack...

0
0
发表了博客
2018/09/27 15:18

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

[使用Go语言web框架gin-gonic构建RESTful API服务](https://www.coderminer.com/blog/post/7be1bfda7a1bbd13c9f17d927fa0bf21 "使用Go语言web框架gin-gonic构建RESTful API服务")

0
0
发表于软件架构专区
2019/08/30 15:31

Gin

Gin官方地址:https://gin-gonic.com/ Gin的Github 地址:https://github.com/gin-gonic/gin gin官方简介 Gin is a web framework written in Golang. It features a martini-like API with much better performance, up to 40 times faster. If you need performance and good productivity, you will love Gin. 粗俗的翻译成中文就是Gin是一个web框架,并且性能雕的飞起,谁用谁知道 安装方式 go get -u github.com/gin-gonic...

0
0
发表了博客
2019/06/11 13:13

gin mongodb restful api设计: 动态的patch接口

[TOC] 什么是Patch? Patch方法可以用来更新资源的一个组成部分 什么时候使用Patch? 当你仅需更新资源的某一项,即不完全也不幂等 那当我们的模型在数据库中几乎每个字段都可能会遇到改变的时候,难道在patch的时候,或者专门写一个post的接口去一个一个if else操作吗,而我们又使用的是静态语言golang,有没有什么办法能够动态的让我们进行愉快的Patch呢? 答案当然是有的,先说说如何去实现: 我们需要利用golang的map[string]...

0
0
发表了博客
2018/05/03 16:37

Gin的应用

Gin是一个golang的web server微框架,用于搭建一个简单的web server。 Hello World 使用Gin实现Hello world非常简单,创建一个router,然后使用其Run的方法: import ( "gopkg.in/gin-gonic/gin.v1" "net/http" ) func main(){ router := gin.Default() router.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "Hello World") }) router.Run(":8000") }   简单几行代码,就能实...

0
0
发表了博客
2020/06/06 16:20

gin教程

Golang Gin 实战(十)| XML渲染 Golang Gin 实战(九)| JSONP跨域和劫持 Golang Gin 实战(八)| JSON渲染输出 Golang Gin 实战(七)| 分组路由源代码分析 Golang Gin 实战(六)| 获取Form表单参数和原理分析 Golang Gin 实战(五)| 接收数组和map Golang Gin 实战(四)| URL查询参数的获取和原理分析 Golang Gin 实战(三)| 路由参数 Golang Gin 实战(二)| 简便的Restful API 实现 Golang Gin 实战(一)| 快速安装入...

0
0
发表了博客
2020/05/26 15:05

Gin_路由

1. 基本路由 gin 框架中采用的路由库是基于httprouter做的 1、router:=gin.Default():这是默认的服务器。使用gin的Default方法创建一个路由Handler; 2、然后通过Http方法绑定路由规则和路由函数。不同于net/http库的路由函数,gin进行了封装,把request和response都封装到了gin.Context的上下文环境中。 3、最后启动路由的Run方法监听端口。还可以用http.ListenAndServe(":8080", router),或者自定义Http服务器配置。 1 2 3 ...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
2020/02/14 17:00

有啥特点?

有啥特点?

1
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
2 评论
6 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部