Go语言中文网 为您找到相关结果 440

6 款最棒的 Go 语言 Web 框架简介

![](https://raw.githubusercontent.com/studygolang/gctt-images/master/top-6-web-frameworks-for-go-as-of-2017/twitter_status.jpg) https://twitter.com/ThePracticalDev/status/930878898245722112 如果你只是想写一个自己用的小网站,或许你不需要框架,但如果你是要开发一个投入生产运营的网站,那么你肯定会需要一个框架,而且是需要一个好的 Web 框架。 如果你已经掌握所有必要的知识和经验,你会冒险自己去重新开发所有的功能么?你有时间去找满足生产级别要求的库来用于开发么?另外,你确定这个库可以满足你后续所有的要求? 这...阅读全文

博文 2017-12-09 03:34:14 polaris

go服务端----使用gin框架搭建简易服务

使用gin框架搭建简易服务 go语言web框架挺多的,各有各的特点和风格。我之所以在项目中使用gin框架,是因为项目一开始是用的martini,一个设计得很好的框架,但是存在一个比较严重的问题,就是大量使用反射使用太多导致效率过低(这个问题也导致了程序在访问量暴涨时内存上涨过快的问题),而且这个框架在去年就没有人维护了,而作者推荐使用风格很相近的gin框架,大概看了一下,风格确实差不多,而且效率很高,于是就用了gin。至于其它的框架,了解得比较多的是beego,项目中也使用了它的子项目beelog,但是由于我做的项目是偏向于应用服务,而不是网站服务,它的风格更适合网站服务,因此就没有选择它。 贴一下这两个框架的github仓库,martini就不推荐了 gin beego 下面贴一下用gin...阅读全文

博文 2016-11-04 13:00:06 KeKeQiaoKeLi

Golang 微框架 Gin 简介

所谓框架 框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了。成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应手的时候,可以尝试改造一些框架,或是自己创造一个。 曾经我以为Python世界里的框架已经够多了,后来发现相比golang简直小巫见大巫。golang提供的net/http库已经很好了,对于http的协议的实现非常好,基于此再造框架,也不会是难事,因此生态中出现了很多框架。既然构造框架的门槛变低了,那么低门槛同样也会带来质量参差不齐的框架。 考察了几个框架,通过其github的活跃度,维护的team,以及生产环境中的使用率。发现Gin还是一个可以学习的轻巧框架。 Gin Gin是一个g...阅读全文

博文 2017-12-03 16:03:06 mickelfeng

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

我们已经了解了Golang的Gin框架。对于Webservice服务,restful风格几乎一统天下。Gin也天然的支持restful。下面就使用gin写一个简单的服务,麻雀虽小,五脏俱全。我们先以一个单文件开始,然后再逐步分解模块成包,组织代码。 It works 使用Gin的前提是安装,我们需要安装gin和mysql的驱动,具体的安装方式就不在赘述。可以参考Golang 微框架Gin简介和Golang持久化。 创建一个文件夹用来为项目,新建一个文件main.go: ☁ newland tree . └── main.go main.go package main import ( "gopkg.in/gin-gonic/gin.v1" "net/http" ) func main() {...阅读全文

博文 2017-03-23 06:59:03 人世间

go web应用的部署和热更新

### 序言 Golang标准库的http部分提供了强大的web应用支持,再加上negroni等中间件框架的支持,可以开发高性能的web应用(如提供Restful的api服务等)。 通常这些web应用部署在多台Linux操作系统的应用服务器上,并用Nginx等做为反向代理,实现高可用的集群服务。 当应用版本升级时,如何实现比较优雅的多态服务器的版本更新呢?我google、baidu了一下,也许我输入的关键字不对,也许这对很多人不是个问题,反正我是没有找到完整的方案。 ### 问题 Web应用的更新,我觉得可能需要考虑几个方面的问题: * 编译好的应用二进制文件、配置文件上传到服务器上; * 应用服务器能感知到有新的版本上传; * 在没有停止服务的情况下,热更新...阅读全文

主题 2015-10-25 08:08:28 rod6

golang--gin获取post里body的参数

如题,post发送数据有几种形式,form和流是最常用的。特别是在程序里使用httpclients,一般都算通过流发送。在php里,是通过php://input来获取的。在gin中,可以通过c.Request.Body.Read(buf)。具体代码如下: package main import ( "fmt" "net/http" "github.com/gin-gonic/gin" ) func main() { router := gin.Default() router.POST("/events", events) router.Run(":5000") } func events(c *gin.Context) { buf := make([]byte, 1024) n, _ :=...阅读全文

博文 2016-09-10 03:00:03 Manrener

golang 热更新技巧

## 序言 Golang标准库的http部分提供了强大的web应用支持,再加上negroni等中间件框架的支持,可以开发高性能的web应用(如提供Restful的api服务等)。 通常这些web应用部署在多台Linux操作系统的应用服务器上,并用Nginx等做为反向代理,实现高可用的集群服务。当应用版本升级时,如何实现比较优雅的多态服务器的版本更新呢? ## 问题分析 Web应用的更新,我觉得可能需要考虑几个方面的问题: 1. 编译好的应用二进制文件、配置文件上传到服务器上; 2. 应用服务器能感知到有新的版本上传; 3. 在没有停止服务的情况下,热更新版本; 4. 最好所有的更新过程,可以脚本化,减少手动操作的错误。 ## 方案 其实,go社区有一些开源项目,可以自动检测web应用的改变,...阅读全文

博文 2017-04-21 02:00:37 lancelotM

【Gin框架】为什么我压测Gin框架性能只能达到300qps就开始超时呢

大家一直都说Go性能很好,而Gin框架更是比较好的web服务框架。但是为什么我用http_load压测Gin,当300qps的时候,就开始出现大量超时。而且压测10min后就开始出现超时现象。 我的Gi操作就是当请求进来后,sleep 1毫秒,然后return ok(1毫秒为模拟服务响应时间,比如查数据库什么的),但是即使这样当压力到达300qps的时候,服务就超时了。。。 请大神们帮忙,是不是我使用的哪个地方有问题?至少Gin也要导到少说1千,多了1万的qps吧?为啥到了300就有问题了。。。 代码如下: package main import ( "time" "gopkg.in/gin-gonic/gin.v1" "net...阅读全文

主题 2017-05-02 03:36:55 qiran87

在Github中stars数最多的Go Web框架集合

Project Name Stars Forks Description beego 12195 2810 beego is an open-source, high-performance web framework for the Go programming language. gin 11602 1357 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 Gi...阅读全文

博文 2017-12-19 11:54:01 终于19岁

聊一聊,Golang “相对”路径问题

前言 Golang 中存在各种运行方式,如何正确的引用文件路径成为一个值得商议的问题 以 gin-blog 为例,当我们在项目根目录下,执行 go run main.go 时能够正常运行(go build也是正常的) [$ gin-blog]# go run main.go [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] GET /api/v1/tags --> gin-blog/rou...阅读全文

博文 2018-03-13 00:34:39 煎鱼

APIGin_API_Framework

欢迎使用GO Gin API Framework @(示例笔记本)[马克飞象|帮助|Markdown] GIN API Framework是一款专为Go Gin 框架打造的API Framework,通过精心的设计与技术实现,集成了大部分稳定开发组件,memcache consistance Hash,redis,nsq,api doc ,mysql 等。特点概述: 功能丰富 :支持大部分服务器组件,支持API Doc; 得心应手 :简单的实例,非常容易上手; 深度整合 :深度整合memcache,redis,mysql,beego ,gin 框架。 性能优先 :为啥不直接使用beego那,因为gin是目前httprouter性能最高,占用资源最少的框架,而beego...阅读全文

开源项目 2016-12-15 03:49:19

Golang 的Gin框架入门教学

学习Golang差不多有一个星期时间,开始自己做点小功能,练练手。 Gin 介绍 Gin 是一个 Golang 写的 web 框架,具有高性能的优点,,基于 httprouter,它提供了类似martini但更好性能(路由性能约快40倍)的API服务。官方地址:https://github.com/gin-gonic/gin 安装框架 配置好GOPATH,建议自己在GOPATH建个项目,这里我以aze.org作为项目目录。 $ go get github.com/gin-gonic/gin 安装mysql驱动 $ go get github.com/go-sql-driver/mysql 组织项目 经过上面的model和handler的分离,代码结构变得更加清晰,可是我们还是单文件。下一步将...阅读全文

博文 2018-08-29 06:36:06 阿泽Aze

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

Golang Gin实践 连载十五 生成二维码、合并海报 原文地址:Golang Gin实践 连载十五 生成二维码、合并海报项目地址:https://github.com/EDDYCJY/go... 如果对你有所帮助,欢迎点个 Star 👍 前言 在本章节,将实现如下功能细项: 1、生成二维码 2、合并海报(背景图 + 二维码) 实现 首先,你需要在 App 配置项中增加二维码及其海报的存储路径,我们约定配置项名称为 QrCodeSavePath,值为 qrcode/ 经过多节连载的你应该能够完成,若有不懂可参照 go-gin-example 生成二维码 安装 $ go get -u github.com/boombuler/barcode 工具包 考虑生成二维码这一动作贴合工具包的定义,且...阅读全文

博文 2018-07-05 08:34:46 煎鱼

Golang环境安装和依赖管理

Golang一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Golang提供了方便的安装包,支持Windows、Linux、Mac系统。 下载安装包 Golang的官网是https://golang.org/,如果官网打不开,可以访问https://golang.google.cn/这个域名。在官网点击Download Go会进入下载页,可以看到这里提供了针对各个系统的安装包,也提供了源码,可以下载源码编译安装。 下载运行安装包后,在terminal中执行go env命令,如果出现下面的输出说明已经安装成功。 GOROOT与GOPATH 仔细看上面的输出,会发现其中有一个GOPATH,又有一个GOROOT,那么到底哪个才是Golang的运行环境呢。 首先访问一下GOROOT这个...阅读全文

博文 2018-07-11 02:34:42 simpleapples

基于golang gin框架的单元测试

在用Gin框架编写了一个web server之后,我们如果需要测试handlers接口函数的话,主要可以采用两种方式来进行。 第一种是部署web server,然后通过浏览器或其他http请求模拟工具来手动模拟真实的http请求,发送http请求之后,解析返回的响应,查看响应是否符合预期;这种做法比较麻烦,而且测试结果不太可靠。 第二种是使用httptest结合testing来实现针对handlers接口函数的单元测试。 下面以对四个接口做相应的单元测试为例,分享基于Gin的单元测试的一些方法: 接口名称 请求地址 请求类型 响应数据类型 响应数据 OnGetStringRequest /getString get string success OnPracticeRequest /prac...阅读全文

博文 2017-12-05 08:03:06 Valiben

Golang 微框架 Gin 简介

所谓框架 框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了。成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应手的时候,可以尝试改造一些框架,或是自己创造一个。 曾经我以为Python世界里的框架已经够多了,后来发现相比golang简直小巫见大巫。golang提供的net/http库已经很好了,对于http的协议的实现非常好,基于此再造框架,也不会是难事,因此生态中出现了很多框架。既然构造框架的门槛变低了,那么低门槛同样也会带来质量参差不齐的框架。 考察了几个框架,通过其github的活跃度,维护的team,以及生产环境中的使用率。发现Gin还是一个可以学习的轻巧框架。 Gin Gin是一个g...阅读全文

博文 2017-03-15 03:50:08 人世间

Go 的 WebSocket 框架 Melody

Melody 是一个 Go 语言的微型 WebSocket 框架,基于 [github.com/gorilla/websocket](https://github.com/gorilla/websocket) 开发,主要特性: * 接口简单易用,类似 net/http 或者 [Gin](http://www.oschina.net/p/gin-web-framework) * 提供给所有广播以及给选择连接会话广播的简单途径 * 消息缓冲对并发写是安全的 * 可自动处理 ping/pong 和会话超时 一个简单的实例: [![Chat demo](http://static.oschina.net/uploads/img/201505/25075129_v...阅读全文

开源项目 2015-05-24 16:00:00 olahol

Gin框架与《Web Development with Go》实践(一)

golang的标准web开发 使用golang的标准库net/http包开发web应用是非常简单的。对于此部分内容,在其他的书中或网上资料里已有详尽说明,在此不再赘述。gin框架简介通过查阅资料及网上讨论,发现了一些现在仍然比较流行的web框架。它们有:beego、iris、gin、echo ……其中gin就是此系列文章将要使用的。关于gin的基本使用方法,请查阅:gin的github地址 Go语言web框架一本质量上乘的好书没办法,这是一本洋书,一本能够深入浅出,质量上乘的洋书;我自己也收集了不少关于golang的洋书,经过浏览对比后,发现只有这本书里有一个比较完整的demo,同时清晰地展示了这个demo开发的过程。此书的封面和书中的demo代码: Web Development with...阅读全文

博文 2017-06-05 13:07:33 Cyberpunk_ZYM

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 ├── middleware ├── models ├── pkg ├── routers └── runtime conf:用于存储配置文件 middleware:应用中间件 models:应用数据库模型 pkg:第三方包 ...阅读全文

博文 2018-02-17 11:34:37 EDDYCJY

gin web框架解决跨域问题

 func Cors() gin.HandlerFunc { return func(c *gin.Context) { method := c.Request.Method if method == "OPTIONS" { c.JSON(http.StatusOK, "Options Request!") } origin := c.Request.Header.Get("Origin") var headerKeys []string for k, _ := range c.Request.Header { headerKeys = append(headerKeys, k) } headerStr := strings.Join(headerKeys, ", ")...阅读全文

博文 2018-01-08 11:54:34 hfyarvin

go使用token实现简单的权限管理

这里采用的是在header里设置token进行鉴权,cookie也类似:基本思路为前端在header里设置token,后端采用redis等进行存储,使用中间件进行鉴权,登录时设置token。以下是登录生成token:设置if err:=tools.NewAccountSsdbCache(info.Id,token);err!=nil { c.JSON(403,gin.H{ "status":403, "msg":to.String(err), }) return }方法func NewAccountSsdbCache(userid int64,val string)(err error){ ssdb,err:=common.NewSsdbClient() if err!=nil { retu...阅读全文

博文 2018-04-17 19:40:42 misasky

vgo简明教程(Go语言依赖包管理工具)

前言 vgo是Go语言推出的第三方库管理工具,即将在Go语言新版本中使用。 相信大家都接触过其它语言的第三方库管理工具,比如Java的maven,PHP的composer,Python的pip,Node的npm等。vgo类似于这样的功能,方便Go语言项目管理第三方库。 Go语言官方以前一直没有明确正式的包管理工具,因此导致包管理工具非常混乱,比如dep,glide,govendor,godep等。(虽然dep也是Go语言官方推出的,但是它最终会被放弃。) vgo的推出,是Go语言社区的需要,将解决包管理工具混乱的问题。Go语言官方将使用这个依赖工具为主,所以我们有必要提前了解一下它的使用。 (vgo即英文versioned go的缩写) vendor目录 vendor目录是Go1.5版本后添...阅读全文

博文 2018-06-24 21:34:38 wuyumin

Go 语言 Web 框架 ThinkGo

ThinkGo 是一款 Go 语言编写的 web 快速开发框架。它基于开源框架 Gin 进行二次开发,旨在实现一种类 ThinkPHP 的高可用、高效率的 web 框架。在此感谢 [Gin](https://github.com/gin-gonic/gin) 和 [httprouter](https://github.com/julienschmidt/httprouter)。它最显著的特点是模块、控制器、操作三段式的标准 MVC 架构,且模块与插件的目录结构完全一致,令开发变得非常简单灵活。 [![ThinkGo Admin](http://static.oschina.net/uploads/img/201601/16202035_sq8e.jpg)](https://github.c...阅读全文

开源项目 2016-01-15 16:00:00 henrylee2cn

Go 语言如何去解决 Web 开发人员面临的众多问题?

坦白的说,我的团队非常厌恶我对 Go 语言传道的方式,每当我们团队的代码库出现问题时,他们希望我用一种更委婉的方式提出。 ![](https://raw.githubusercontent.com/studygolang/gctt-images/master/web-developers/Screen-Shot-2016-01-29-at-11-57-56.png) 我学会的第一门编程语言是 PHP,这是个优秀的语言,我可以用它很快地构建 Web 应用程序,这些应用程序也能够达到预期的效果。但是我注意到,为了使其可用,我会花费大量的时间来关注缓存。 我也发现自己依靠很多第三方库来做一些更复杂的任务,比如队列,Web Sockets 等等。我发现自己使用了 Pusher,RabbitMQ,Be...阅读全文

博文 2017-12-11 11:22:12 Dingo1991

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,重点是小巧、易用、性能好很多,也因为 httprouter 的性能提高了40倍。 准备环节 一、安装Golang 首先,根据对应的操作系统选择安装包下载, 在这里我使用的是Centos 64位系统 wget h...阅读全文

博文 2018-02-17 11:34:37 EDDYCJY

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

将Golang应用部署到Docker 项目地址:https://github.com/EDDYCJY/go... (快上车,支持一波)原文地址:https://segmentfault.com/a/11... 注: 开始前你需要安装好 docker,配好镜像源 本章节源码在 f-20180324-docker 分支上 从本章节开始 项目目录都以 go-gin-example 为基准(请配合自己本地项目灵活变动) 介绍 在这里简单介绍下Docker,建议深入学习 Docker 是一个开源的轻量级容器技术,让开发者可以打包他们的应用以及应用运行的上下文环境到一个可移植的镜像中,然后发布到任何支持Docker的系统上运行。 通过容器技术,在几乎没有性能开销的情况下,Docker 为应用提供了一个隔...阅读全文

博文 2018-03-24 17:34:38 煎鱼

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

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

博文 2018-03-15 15:34:40 煎鱼

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上的包,若无科学上网,你可以使用 gopm 进行安装 gopm get -g -v github.com/swaggo/swag/cmd/swag cd $GOPATH/src/github.com/swaggo/swag/cmd/...阅读全文

博文 2018-03-18 12:34:37 煎鱼

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

Golang Gin实践 连载十七 用 Nginx 部署 Go 应用 原文地址:Golang Gin实践 连载十七 用 Nginx 部署 Go 应用 前言 如果已经看过前面 “十六部连载,两部番外”,相信您的能力已经有所提升 那么,现在今天来说说简单部署后端服务的事儿 🤓 做什么 在本章节,我们将简单介绍 Nginx 以及使用 Nginx 来完成对 go-gin-example 的部署,会实现反向代理和简单负载均衡的功能 Nginx 是什么 Nginx 是一个 Web Server,可以用作反向代理、负载均衡、邮件代理、TCP / UDP、HTTP 服务器等等,它拥有很多吸引人的特性,例如: 以较低的内存占用率处理 10,000 多个并发连接(每10k非活动HTTP保持活动连接约2.5 MB...阅读全文

GIN+GORILLA=A GOLANG WEBSOCKET SERVER

鉴于聊天已然成为大部分app的基础功能,而大部分app用户基数有没有辣么大,常用的聊天server架构如xmpp或者消息队列实现之类的用起来还挺麻烦的,有比较难跟网页端做交互,加之H5标准落地,所以websocket已然成为一个轻巧可用性高的聊天server实现方法; websocket的server常见的是用nodejs或者java的netty框架实现,netty相对重一点,direct buffer的内存泄露调起来比较麻烦,试了一下go,轻巧,稳定性不错,性能不错,所以用go实现了一下; websocket的协议标准和基本概念网上一搜一片,这里不赘述; http server用gin来做,websocket的handler则用gorilla,由于不重复造轮子,所以整个搭建的过程很快; i...阅读全文

博文 2015-12-17 03:00:00 bader

基于 Gin 的 Go 前端组件化 web 框架

基于 Gin 的 Go (风格)轻量高效的前端组件化 web 框架,这是一项正在完善的工作 Ego 是一个用 Go 编写的全栈 Web 框架,轻量级和高效的前端组件解决方案 前端编译执行,不影响后端效率 项目地址: https://github.com/go-ego/ego 安装: ``` go get -u github.com/go-ego/ego ``` 例子: https://github.com/go-ego/ego/tree/master/examples/ego 路由 ```go package main import ( "github.com/go-ego/ego" ) func main() { ...阅读全文

主题 2017-03-21 15:17:41 vway

用Go写后台系统API--记录心得(二)

## Go写后台API 项目很渣,大佬可以提意见~~ ### 技术栈 用的gin框架,登录验证使用jwt-go,权限管理是casbin,数据库使用mongodb ### 为什么要写这篇文章 因为想记录自己踩的坑,顺便记录心得。然后关于casbin这个库的使用资料很少,对于新手来说很难看明白,大神那肯定刷一遍就懂了。 ### 正题 写到这里我们登录时差不多了。然后用postman测试一下 ![01.png](https://static.studygolang.com/181104/05b025f000f75e61cd4fdb079e4d5094.png) token已经拿到了,然后也返回了一些员工的信息。前端是采用的vue 直接就可以通过axios来获取。员工信息...阅读全文

golang的web框架是如何处理高并发场景下的http请求的?


golang来处理http请求,有自带的http包,也有各种框架如gin等,但是很少有资料说明这些包和框架在高并发请求下是如何处理的?

比如java的spring会创建一个线程池和队列来帮助处理大量请求,那golang的http或者gin框架是如何做的呢?创建一个goroutine池?还有其他更细节的说明吗?网上资料好像很少。。...阅读全文

基于gin框架的web项目模板

github地址:https://github.com/chenhg5/gin-template web开发的项目模块: - mysql、redis链接 - mysql 读写分离 - redis 集群 - 中间件 - 全局环境配置 - govendor包管理 - session / cache - 性能分析 pprof - 模型 ORM - 全局错误处理 - 前端资源管理 - 微信/支付宝开发sdk - 队列任务【todo】 - log日志分析【todo】 - 快速开发脚手架脚本【todo...阅读全文

博文 2018-04-03 15:15:13 cg33

web框架Gin使用

### 介绍 为简化使用流程,减少开发时间,降低项目开发成本,搭建了一套基于 ```Gin``` 的web骨架。组件包括但不局限于路由、控制器、Orm、session、cookie、mysql连接、认证中间件等。 项目地址:https://github.com/chenhg5/morningo ### 使用指南 提供了一个命令行工具,morningo-installer。可以直接下载: ``` wget https://gitee.com/cg33/morningo-installer/raw/master/morningo-installer # mac wget https://gitee.com/cg33/morningo-installer/raw/master/morningo-i...阅读全文

博文 2018-08-04 12:15:07 cg33

使用Golang的Gin框架和vue编写web应用

背景: 之前使用Golang的Gin框架进行一些运维内部后端的API接口开发,对外提供提供json类型的数据响应,但是该种方式在浏览器访问数据时数据格式不友好(由于是API接口,一般需要使用postman之类的工具来验证接口返回数据),后来尝试了使用Golang的template模板来结合html进行数据渲染,但也发现比较缺乏美感。之后决定使用前端框架来渲染后端数据,由于vue框架的各种优势,比如简单、数据的双向绑定等等好处,决定使用vue框架来开启我的前端之旅。接下来简单来讲解下使用Golang后端和vue前端进行融合的示例。 基于Gin框架的后端API 编写基于Gin框架的API: # 查看源码文件 $ cat main.go /** * @File Name: main.go * @A...阅读全文

博文 2018-12-03 01:34:46 BGbiao

用 Go 写一个服务容器( Service Container )

我最近一直在做一个相当大的 API 项目,里面包括很多路由规则( routes )、服务接口( services )和处理函数( handlers )等。首先,我注意到 `main.go` 文件的启动过程开始越来越臃肿。 为了避免设置全局的服务接口,我使用共享结构体( struct )将服务接口与处理函数绑定在一起。举个例子: main.go ```go package main func main() { r := gin.Default() userRepo := models.NewUserRepo( drives.DataStore().C("users"), ) userHandler := handlers.NewUserHandler(userRepo) r.GET("/api...阅读全文

博文 2017-12-10 13:48:33 jzhongming

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 Martini-like API with much better performance – up to...阅读全文

博文 2017-08-30 19:31:03 wangshubo1989

golang选型从满怀期待到遗憾放弃后,我决定推广golang

2017年我们公司需要快速迭代一款产品,当时,我们团队的后端框架是spring mvc ,该框架结构清晰,上手快,但是由于我们的产品迭代速度快,底层数据库操作接口变动频繁,导致service层工作量巨大,不胜其烦。另外,随着项目的成长,代码量越来越大,项目启动越来越慢,严重影响了开发调试速度。在这种情况下,我们希望寻找一种新的框架或编程语言,我们期望他具备调试简单,上手快,启动速度快,保密性高,以及适用于高并发及web编程,性能优越等优点。当时手上备选框架有spring boot和golang,综合比较,在巨大的遗憾中,我们选择了springboot,相关选型参考信息如下。1、从功能满足度比较在启动该产品研发时,我们梳理了自己的需求,主要在三个方面,一是支持高性能的restful api服务...阅读全文

博文 2018-02-19 18:15:04 winlion

go get 安装一个特定版本的包失败解决方法

场景描述 go get 下载第三方包golang gin框架时,会去下载gopkg.in/go-playground/validator.v8包以及gopkg.in/yaml.v2包,gopkg.in站点下的包都是中间包,最终的包代码是在github上,于是直接到github.com上去下载,对应的真实代码地址是: https://github.com/go-playground/validator/tree/v8.18.2 https://github.com/go-yaml/yaml/tree/v2.2.1 于是,我直接go get github.com/go-playground/validator 以及 go get github.com/go-yaml/yaml来获取,能够顺利下载...阅读全文

博文 2018-11-01 14:34:41 凯文不上班

基于gin框架快速开发应用(实战类型项目)

### 技术选型 框架: gin 日志处理: zap orm: gorm 优雅重启HTTP服务: gracehttp 测试框架: ginkgo ### 接口风格 RESTFUL ### 项目结构 * api - handler函数 * route - 路由注册 * model - 数据模型以及数据库操作 * doc - 接口文档 * log - 日志处理 * config - 配置文件 * tools - 公共工具类 * vendor - 项目依赖其他开源项目目录 * dist - 打包生成安装包的存放路径 * main.go - 程序执行入口 * Makefile 提供编译、打包、测试等功能的脚本文件 * ginkgo 二进制文件,容器内执行测试用例的时候需要使用的命令,请勿移除 * ju...阅读全文

博文 2018-07-17 19:52:14 KenmyZhang

GIN_API_Framework是一款专为Go Gin 框架打造的API Framework

GIN API Framework是一款专为Go Gin 框架打造的API Framework,通过精心的设计与技术实现,集成了大部分稳定开发组件,memcache consistance Hash,redis,nsq,api doc ,mysql 等。特点概述: 功能丰富 :支持大部分服务器组件,支持API Doc; 得心应手 :简单的实例,非常容易上手; 深度整合 :深度整合memcache,redis,mysql,beego ,gin 框架。 性能优先 :为啥不直接使用beego那,因为gin是目前httprouter性能最高,占用资源最少的框架,而beego orm是目前最接近django的框架,so...。 项目地址: https://github.com/...阅读全文

基于 Go 的开源社区系统golang123

golang123 是一个开源的社区系统,界面优雅,功能丰富,小巧迅速。 已在golang中文社区得到应用,你完全可以用它来搭建自己的社区。 golang123的技术架构是前后端分离的, 前端使用**vue**、**iview**、**node.js**、**nuxt**等技术来开发, 后端使用**go**、**gin**、**gorm**等技术来开发。golang123的技术选型也是超前的, 我们大胆得使用**nuxt**来做**前后端同构渲染**。 [![image](https://static.oschina.net/uploads/img/201802/01190145_nlSS.png)](https://user-images.githubusercontent.com/2...阅读全文

开源项目 2018-02-01 19:30:00 网友

golang标准库的学习

1.内存分配 new,make(slice,map,channel) 一个返回指针,一个返回类型值 ---------并发 1.使用channel和goroutine开发并行程序的能力。什么是goroutine? 具体统称为线程,进程,协程;分配和释放在堆空间上;仅比分配栈空间多一点消耗。 -----------goroutine func ready(w string, t int) { time.Sleep(time.Duration(t) * time.Second) fmt.Println(w, "is ready!") } func main() { //两个线程和主线程是同时运行的,若主线程不等待,则程序会直接退出 //go关键字开始一个goroutine go ready("o...阅读全文

博文 2015-10-27 11:00:07 ice_201507

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

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

博文 2018-02-17 11:34:37 EDDYCJY

gin框架,关于加载react编写的html问题,无法正常显示

package main import ( "log" "net/http" "github.com/gin-gonic/gin" ) func main() { //注册一个 默认的路由器 router := gin.Default() //加载html文件 // router.LoadHTMLGlob("") router.LoadHTMLFiles("/Users/hopkings/www/Go/src/TodoList/htmltmpl/todolist.html") router.GET("/index", func(c *gin.Context) { // c.HTML(http.StatusOK, "todolist....阅读全文

Golang 套件管理工具 Glide

# 原文來自: [Golang 套件管理工具 Glide](https://blog.wu-boy.com/2016/05/package-management-for-golang-glide/) 套件版本管理已經是各大語言不可或缺的工具,像是 [Node.js][1] 有 [npm][2],[PHP][3] 有 [Composer][4],[Ruby][5] 有 [RVM][6] 等...,都已經發展很成熟了,但是在 [Golang][7] 語言呢,在 Go 1.5 以後的版本,可以透過 `GO15VENDOREXPERIMENT` 或 [Glide](https://glide.sh/) 來管理套件版本,在 Go 官方網站也有整理一份 [Wiki](https://github....阅读全文