• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:gin-restful


开源软件地址:https://gitee.com/Mars_Lee/gin-restful


开源软件介绍:

gin http restful项目生成

快速入门

go get  github.com/go-libraries/gin-restful//export GO111MODULE=on && export GOMOD={{pwd}}\go.mod && go install createGinProject.go$GOBIN/gin-restful  -package=项目名(包名) -path=项目路径 -dsn="username:password@tcp(host:port)/database"

生成项目基本结构

-config  config.ini-controllers  http处理回调-logs  日志文件目录-models  模型文件-services  主要对控制器的复杂业务二次封装-routers  路由文件go.modmain.goReadme.md

参数详解

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中书写新的控制器
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}
  1. 可以在controllers中注入执行方法
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)}

路由

路由可以开发二次中间件功能

package routersimport (	"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下表生成模型并提供基础方法

外部库详见 外部库-模型生成器

文档

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

详见


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap