gin-restful

基于 gin 的 restful api 开发框架
授权协议 MIT
开发语言 Google Go
所属分类 Web应用开发、 REST/RESTful项目
软件类型 开源软件
地区 国产
投 递 者 公冶兴文
操作系统 跨平台
开源组织
适用人群 未知
 软件概览
# 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进行配置,可以一键生成

详见
  • 一、RESTful API是什么 REST是Representational State Transfer的简称,中文翻译为“表征状态转移”或“表现层状态转化”,通俗一点的话就是RESTful是一种风格,通过四个HTTP动词GET,POST,PUT,DELETE对服务器资源进行操作,用传统API和RESTful API做个对比图: 传统请求方式 传统URL RESTful 请求方式 RESTful

  • 虽然,当前go语言的rest框架比较多,其中比较有名的有beego, gin等。但是这些框架相对来说都有点太重,而Kubernetes中使用的go-restful框架是一个轻量级的框架,能够满足大多数restful程序开发中的需求,本文对项目中使用go-restful框架中使用到的基本概念和使用方式做了简单的整理,如有不当之处,请不吝赐教。 基本概念 go-restful 框架中最基础的几个概念包

  • 使用Go和Gin开发Restful API 学习笔记自存,希望也能对您有所帮助,欢迎大神批评指教。 官方文档:Tutorial: Developing a RESTful API with Go and Gin - The Go Programming Language 简介 Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点 对于golan

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

  • Swagger Api框架 RestFul Api文档在线自动生成工具——>Api文档与API定义同步更新 直接运行,可以在线测试API接口 安装: #1、安装swag $ go get -u github.com/swaggo/swag/cmd/swag #2、在go 项目中(包含main.go)的目录,使用swag init命令生成相关文件。 $ swag init #运行后发现在docs

 相关资料
  • 问题内容: 我正在使用Go gin框架Go gin 我有状态码:200,但是在OPTIONS请求之后什么也没有发生。好像我错过了什么,但我不明白我在哪里错了。 有谁能够帮我? 问题答案: FWIW,这是我的CORS中间件,可满足我的需求。

  • 本文向大家介绍基于gin的golang web开发:路由示例详解,包括了基于gin的golang web开发:路由示例详解的使用技巧和注意事项,需要的朋友参考一下 Gin是一个用Golang编写的HTTP网络框架。它的特点是类似于Martini的API,性能更好。在golang web开发领域是一个非常热门的web框架。 启动一个Gin web服务器 使用下面的命令安装Gin 在代码里添加依赖 快

  • GIN

    Gin 是一个 JSON-API 框架,目前还处于早期开发状态。 当你需要在性能和伸缩性要求很高时,Gin 对你会很有帮助。它运行于 OpenResty ,使用 Lua 编写。 下面是一个简单的 Gin 控制器: local InfoController = {}function InfoController:whoami() return 200, { name = 'gin' }endreturn InfoController

  •  rk-gin 是提供 Gin 框架中间件以及快速启动器,可以通过 YAML 文件的形式,快速启动 Gin 框架微服务。 提供的功能 功能 描述 通过 YAML 启动服务 用户可以通过定义 YAML 文件,快速启动基于Gin 框架微服务。 通过代码启动服务 用户可以通过调用代码函数,快速启动基于Gin 框架微服务。 启动 Swagger UI 用户可以通过 YAML 文件,无代码启动 Swagge

  • Gin 是一个用 Go 语言开发的 Web 框架,提供类 Martini 的 API,但是性能更好。因为有了 httprouter 性能提升了 40 倍之多。 $ cat test.go package mainimport (    "net/http"    "github.com/gin-gonic/gin")func main() {    router := gin.Default() 

  • Gin-vue-admin是一个基于vue和gin开发的全栈前后端分离的后台管理系统,集成jwt鉴权,动态路由,动态菜单,casbin鉴权,表单生成器,代码生成器等功能,提供多种示例文件,让您把更多时间专注在业务开发上。 项目文档 在线文档 : https://www.gin-vue-admin.com/ 从环境到部署教学视频 开发教学 (贡献者: LLemonGreen And Fann) 前端