Gin 教程

收录了 20 篇文章 · 111 人关注

  • 大话图解gin源码

    前言 最近在网上搜了一下,对于gin框架用的人还是比较多的,我自己之前也在使用,但是对于源码解析这块,我没有看到自己想看到的那种从框架入手的解析图,所以嘿嘿嘿,我的机会就来了,今天就带来最完整的gin源码图解。希望通过这篇博客你也能自己学会拆轮子。 PS:本文建立在你已经能熟练使用gin的基础之上,如果还没用过可以去官网看一下: https://gin-gonic.com/zh-cn/docs/ 然后gin是对golang的http包的封装,所以最好对http包也要有了解。 整体分析逻辑 先来说...

  • Golang Gin实践 连载十七 用 Nginx 部署 Go 应用

    Golang Gin实践 连载十七 用 Nginx 部署 Go 应用 原文地址:Golang Gin实践 连载十七 用 Nginx 部署 Go 应用 前言 如果已经看过前面 “十六部连载,两部番外”,相信您的能力已经有所提升 那么,现在今天来说说简单部署后端服务的事儿 ???? 做什么 在本章节,我们将简单介绍 Nginx 以及使用 Nginx 来完成对 go-gin-example 的部署,会实现反向代理和简单负载均衡的功能 Nginx 是什么 Nginx 是一个 Web Server,可以用...

  • Golang Gin实践 番外 请入门 Makefile

    Golang Gin实践 番外 请入门 Makefile 原文地址:Golang Gin实践 番外 请入门 Makefile 前言 含一定复杂度的软件工程,基本上都是先编译 A,再依赖 B,再编译 C...,最后才执行构建 如果每次都人为编排,又或是每新来一个同事就问你项目 D 怎么构建、重新构建需要注意什么...等等情况,岂不是要崩溃? 我们常常会在开源项目中发现 Makefile,你是否有过疑问? 本章节会简单介绍 Makefile 的使用方式,最后建议深入学习 怎么解决 对于构建编排,Do...

  • Golang Gin实践 连载十六 在图片上绘制文字

    Golang Gin实践 连载十六 在图片上绘制文字 原文地址:Golang Gin实践 连载十六 在图片上绘制文字项目地址:go-gin-example 前言 本章节是 连载十五 的补充内容,建议一同食用。主要实现合并后的海报上绘制文字的功能(这个需求也是常见的很了),内容比较简单 实现 这里使用的是 微软雅黑 的字体,请点击进行下载并存放到 runtime/fonts 目录下(字体文件占 16 MB 大小) 安装 $ go get -u github.com/golang/freetype ...

  • Golang Gin实践 连载十五 生成二维码、合并海报

    Golang Gin实践 连载十五 生成二维码、合并海报 原文地址:Golang Gin实践 连载十五 生成二维码、合并海报项目地址:https://github.com/EDDYCJY/go... 如果对你有所帮助,欢迎点个 Star ???? 前言 在本章节,将实现如下功能细项: 1、生成二维码 2、合并海报(背景图 + 二维码) 实现 首先,你需要在 App 配置项中增加二维码及其海报的存储路径,我们约定配置项名称为 QrCodeSavePath,值为 qrcode/ 经过多节连载的你应该...

  • Golang Gin实践 连载十四 实现导出、导入 Excel

    Golang Gin实践 连载十四 实现导出、导入 Excel 原文地址:Gin实践 连载十四 实现导出、导入 Excel项目地址:https://github.com/EDDYCJY/go... 如果对你有所帮助,欢迎点个 Star ???? 前言 在本节,我们将实现对标签信息的导出、导入功能,这是很标配功能了,希望你掌握基础的使用方式 另外在本文我们使用了 2 个 Excel 的包,excelize 最初的 XML 格式文件的一些结构,是通过 tealeg/xlsx 格式文件结构演化而来的,...

  • Golang Gin实践 连载十三 优化你的应用结构和实现Redis缓存

    优化你的应用结构和实现Redis缓存 项目地址:https://github.com/EDDYCJY/go... 如果对你有所帮助,欢迎点个 Star ???? 前言 之前就在想,不少教程或示例的代码设计都是一步到位的(也没问题) 但实际操作的读者真的能够理解透彻为什么吗?左思右想,有了今天这一章的内容,我认为实际经历过一遍印象会更加深刻 规划 在本章节,将介绍以下功能的整理: 抽离、分层业务逻辑:减轻 routers/*.go 内的 api方法的逻辑(但本文暂不分层 repository,这块...

  • Gin实践 连载十二 优化配置结构及实现图片上传

    优化配置结构及实现图片上传 项目地址:https://github.com/EDDYCJY/go... 如果对你有所帮助,欢迎点个 Star ???? 前言 一天,产品经理突然跟你说文章列表,没有封面图,不够美观,!)&¥!&)#&¥!加一个吧,几分钟的事 你打开你的程序,分析了一波写了个清单: 优化配置结构(因为配置项越来越多) 抽离 原 logging 的 File 便于公用(logging、upload 各保有一份并不合适) 实现上传图片接口(需限制文件格式、大小) 修改文章接口(需支持封...

  • Gin实践 连载十一 Cron定时任务

    Cron定时任务 项目地址:https://github.com/EDDYCJY/go... 如果对你有所帮助,欢迎点个 Star 或赞 ???? 在实际的应用项目中,定时任务的使用是很常见的。你是否有过 Golang 如何做定时任务的疑问,莫非是轮询? 在本文中我们将结合我们的项目讲述 Cron 介绍 我们将使用 cron 这个包,它实现了 cron 规范解析器和任务运行器,简单来讲就是包含了定时任务所需的功能 Cron 表达式格式 字段名 是否必填 允许的值 允许的特殊字符 秒(Second...

  • Gin实践 番外 Golang交叉编译

    Golang交叉编译 项目地址:https://github.com/EDDYCJY/go... (快上车,支持一波) 原文地址:https://segmentfault.com/a/11... 前言 在 连载九 讲解构建Scratch镜像时,我们编译可执行文件用了另外一个形式的命令,不知道你有没有疑问? $ CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o go-gin-example . 说明 我们将讲解命令各个参数的作用,...

  • Gin实践 连载十 定制 GORM Callbacks

    定制 GORM Callbacks GORM itself is powered by Callbacks, so you could fully customize GORM as you want 项目地址:https://github.com/EDDYCJY/go... GORM 本身是由回调驱动的,所以我们可以根据需要完全定制 GORM,以此达到我们的目的 注册一个新的回调 删除现有的回调 替换现有的回调 注册回调的顺序 在 GORM 中包含以上四类 Callbacks,我们结合项目选用...

  • Gin实践 连载九 将Golang应用部署到Docker

    将Golang应用部署到Docker 项目地址:https://github.com/EDDYCJY/go... (快上车,支持一波)原文地址:https://segmentfault.com/a/11... 注: 开始前你需要安装好 docker,配好镜像源 本章节源码在 f-20180324-docker 分支上 从本章节开始 项目目录都以 go-gin-example 为基准(请配合自己本地项目灵活变动) 介绍 在这里简单介绍下Docker,建议深入学习 Docker 是一个开源的轻量级容...

  • Gin实践 连载八 为它加上Swagger

    为它加上Swagger 一个好的 API's,必然离不开一个好的API文档 要开发纯手写 API 文档,不存在的 :=) 安装 swag 1、go get $ go get -u github.com/swaggo/swag/cmd/swag 若 $GOPATH/bin 没有加入$PATH中,你需要执行将其可执行文件移动到$GOBIN下 mv $GOPATH/bin/swag /usr/local/go/bin 2、gopm get 该包有引用golang.org上的包,若无科学上网,你可以使用...

  • Gin实践 连载七 Golang优雅重启HTTP服务

    优雅的重启服务 在前面编写案例代码时,我相信你会想到 每次更新完代码,更新完配置文件后就直接这么 ctrl+c 真的没问题吗,ctrl+c到底做了些什么事情呢? 在这一节中我们简单讲述 ctrl+c 背后的信号以及如何在Gin中优雅的重启服务,也就是对 HTTP 服务进行热更新 ctrl + c 内核在某些情况下发送信号,比如在进程往一个已经关闭的管道写数据时会产生SIGPIPE信号 在终端执行特定的组合键可以使系统发送特定的信号给此进程,完成一系列的动作 命令 信号 含义 ctrl + c S...

  • Gin实践 连载六 搭建Blog API's(五)

    API's - logging 在上一节中,我们解决了API's可以任意访问的问题,那么我们现在还有一个问题。 就是我们的日志,都是输出到控制台上的,这显然对于一个项目来说是不合理的,因此我们这一节简单封装log库,使其支持简单的文件日志! 新建logging包 我们在pkg下新建logging目录,新建file.go和log.go文件,写入内容: file.go: package logging import ( "os" "time" "fmt" "log" ) var ( LogSaveP...

  • Gin实践 连载五 搭建Blog API's(四)

    API's - JSON Web Tokens (JWT) 在前面几节中,我们已经基本的完成了API's的编写 但是,还存在一些非常严重的问题,例如,我们现在的API是可以随意调用的,这显然还不够完美,是有问题的 那么我们采用 jwt-go (GoDoc)的方式来简单解决这个问题 下载依赖包 首先,我们下载jwt-go的依赖包 go get -u github.com/dgrijalva/jwt-go 编写jwt工具包 我们需要编写一个jwt的工具包,我们在pkg下的util目录新建jwt.go...

  • Gin实践 连载四 搭建Blog API's(三)

    编写Article的API's、Models 定义接口 本节编写文章的逻辑,我们定义一下接口吧! 获取文章列表:GET("/articles") 获取指定文章:POST("/articles/:id") 新建文章:POST("/articles") 更新指定文章:PUT("/articles/:id") 删除指定文章:DELETE("/articles/:id") 编写路由逻辑 在routers的v1版本下,新建article.go文件,写入内容: package v1 import ( "gi...

  • Gin实践 连载三 搭建Blog API's(二)

    编写Tag的API's、Models 本大节将会涉及到以下知识点: gin:Golang的一个微框架,性能极佳 beego-validation:本节采用的beego的表单验证库,中文文档 gorm,对开发人员友好的ORM框架,英文文档 com,工具包 业务逻辑的编写 我们开始编写业务代码,博客文章会有标签的概念, 定义接口 本节正是编写标签的逻辑,我们想一想,一般接口为增删改查是基础的,那么我们定义一下接口吧! 获取标签列表:GET("/tags") 新建标签:POST("/tags") 更新...

  • Gin实践 连载二 搭建Blog API's(一)

    Gin搭建Blog API's (一) 介绍和初始化项目 初始工作区 首先,我们需要增加一个工作区(GOPATH)路径用于我们的Blog项目。 将你新的工作区加入到/etc/profile中的GOPATH环境变量中, 并在新工作区中,建立bin、pkg、src三个目录。 在src目录下创建gin-blog目录,初始的目录结构: $GOPATH ├── bin ├── pkg └── src └── gin-blog 初始化项目目录 gin-blog/ ├── conf ├── middlewar...

  • Gin实践 连载一 Golang介绍与环境安装

    Golang介绍与环境安装 Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin. Gin是用Golang开发的一个微框架,类似Martinier的API,重点是小巧...