Gin入门

本章概要

  • Gin简介
  • 开发第一个Gin程序

1.1 Gin简介

Gin是用Go语言编写的一个轻量级Web应用框架,现在在各个公司包括字节跳动、bilibili等大互联网公司都得到了广泛的应用。它有很好的性能和更快的路由。由于其本身只是在官方 net/http 包的基础上做的完善,所以理解和上手很平滑。优雅的封装,友好的API,明确的注释。如果你们打算Go语言来构建一个Web应用,我非常推荐你使用它。总体来说,Gin的主要有如下优势:

  • 极其优秀的性能表现
  • 拥有 Go 的编程思想
  • 基于官方 net/http 包的有限封装
  • 使用了史上最快的路由 httprouter
  • 方便、灵活的中间件
  • 强大的数据绑定
  • 活跃的开发者

Gin和Go语言一样,是一个“年轻”的项目,发展非常迅速,使用者越来越多。非常适用于大小公司的线上环境运行。

1.2 开发第一个Gin程序

Go经过多年的演进,也产生了很多的依赖管理工作,包括dep,govendor等,在Go11版本后建议大家使用Go Modules来进行依赖管理。

1.2.1 创建Go Modules工程

这里不过多说明Go Modules的介绍,只介绍两种创建Go Modules工程的方式。

1. 使用命令行创建Go Modules工程

首先可以通过go mod命令创建一个Go Modules工程,在cmd窗口中执行如下命令:

 go mod init
# 使用 go help mod 可以了解更多关于这个工具的使用。

使用命令行创建后,直接使用GoLand打开即可。

2. 使用GoLand创建Go Modules工程

GoLand作为与Intellij IDEA同属JetBrains公司出品的编码工具,在业界得到了广泛的应用。使用GoLand创建Go Modules的步骤如下:

步骤一:创建项目时选择Go Modules,然后按照需要选择项目存放的位置和命名好项目名称即可。

在国内,我们可以使用https://athens.azurefd.net/作为代理,以免下载不到被墙的官方依赖包。

1.2.2 项目构建

1.添加依赖 (可选)

在对应项目目录的go.mod文件中添加Gin依赖:

 require github.com/gin-gonic/gin v1.4.0
2.编写启动类

接下来创建项目的入口文件,在项目根目录(与go.mod同级目录)创建一个main.go文件,代码如下:

package main

import (
"github.com/gin-gonic/gin"
"net/http"
) func main() {
r := gin.Default()
r.GET("/hello", func(c *gin.Context) {
c.String(http.StatusOK, "hello gin!")
})
r.Run() // listen and serve on 0.0.0.0:8080
}

为什么说第一步是可选的呢?是因为如果你敲入代码,代码中又有对应依赖引入(import),在运行启动命令时会自动帮你下载需要的依赖。非常智能,而IDE也会做同样的事情。

1.2.3 项目启动

启动项目有三种不同的方式,下面一一介绍。

1.使用命令行启动

可以直接到相关目录使用命令行启动项目,命令如下:

go run main.go

go run .

启动成功后,在浏览器地址栏输入 “http://localhost:8080/hello" 即可看到运行结果,运行结果如图1-5所示。

2.直接运行main方法

直接在IDE中运行main方法,就可以看到项目启动了,如图1-5所示。

图1-5

启动成功后,也可以在浏览器中直接访问/hello接口。

3.打包启动

当然,Go应用也可以直接打成目标文件运行,在不同的环境中可以编译打成不同的包,在windows环境是.exe文件,直接运行编译打包命令:

go build main.go
go build .

打包完成后可以直接运行可执行文件即可,如图1-7所示

图1-7

1.3 小结

本章主要向读者介绍了一个简单的Gin项目的基本创建过程,从而让读者感受Gin的魅力。当一个Gin项目创建成功后,只需要少量的代码就可以启动一个性能非常好的Web应用,开发者可以直接使用它进行接口和Web应用的开发。第2章向读者详细介绍一下Gin的路由功能。

本章代码地址

Gin + Vue全栈开发实战(一)的更多相关文章

  1. Gin + Vue全栈开发实战(二)

    尝试地写了第一篇自己学习Go Web框架的感受和入门的文章,发现反响还不错,大家也提出了很多的问题来一起交流.近期也渐渐地出现了很多有关go语言开发的相关文章,包括有在蚂蚁金服的大牛的分享,我也一直有 ...

  2. Spring boot+Vue全栈开发---Spring Boot文件上传

    https://blog.csdn.net/Day_and_Night_2017/article/details/86980743 文件上传涉及到两个组件:CommonsMultipartResolv ...

  3. spring boot + vue + element-ui全栈开发入门——开篇

    最近经常看到很多java程序员朋友还在使用Spring 3.x,Spring MVC(struts),JSP.jQuery等这样传统技术.其实,我并不认为这些传统技术不好,而我想表达的是,技术的新旧程 ...

  4. spring boot + vue + element-ui全栈开发入门——基于Electron桌面应用开发

     前言 Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库. Electron通过将Chromium和Node.js合并到同一个运行时环 ...

  5. koa+mysql+vue+socket.io全栈开发之数据访问篇

    后端搭起大体的框架后,接着涉及到的就是如何将数据持久化的问题,也就是对数据库进行 CURD 操作. 关于数据库方案, mongodb 和 mysql 都使用过,但我选用的是 mysql,原因: 目前为 ...

  6. Flask Vue.js全栈开发

    Flask Vue.js全栈开发的 最新完整代码 及使用方式 本系列的最新代码及使用方式将持续更新到: http://www.madmalls.com/blog/post/latest-code/ 1 ...

  7. spring boot + vue + element-ui全栈开发入门

    今天想弄弄element-ui  然后就在网上找了个例子 感觉还是可以用的  第一步是完成了  果断 拿过来  放到我这里这  下面直接是连接  点进去 就可以用啊 本想着不用vue   直接导入连接 ...

  8. 实习模块vue+java小型全栈开发(三)

    实习模块vue+java小型全栈开发(三) --dx 背景 首先,先给自己一个答案:这篇博客我定义为(三),因为之前的两个模块页面,内容都是一样的,但是被改了几次需求,就一直拖着没有上传. 今天是真正 ...

  9. spring boot + vue + element-ui全栈开发入门——spring boot后端开发

    前言 本文讲解作为后端的spring boot项目开发流程,如果您还不会配置spring boot环境,就请点击<玩转spring boot——快速开始>,如果您对spring boot还 ...

随机推荐

  1. PCB 板边倒圆角的实现方法(基本算法一)

    PCB外形是直角时外形时,通常工程制作时,外是直角或尖角的地方倒圆角,主要是为了防止板边容易划伤板且容易扎伤人 所以当客户没有特殊要求时,PCB外形是直角时一般会默认倒角0.5mm圆角(如下图所示) ...

  2. SpringBoot第二十一篇:整合ActiveMQ

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11190048.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   前一章节中 ...

  3. 1. 在Mac OS中配置CMake的详细图文教程

    CMake是一个比make更高级的跨平台的安装.编译.配置工具,可以用简单的语句来描述所有平台的安装(编译过程).并根据不同平台.不同的编译器,生成相应的Makefile或者project文件.本文主 ...

  4. Facebook Libra - 第一笔交易

    第一笔交易 假定 运行的是Linux或者macOS系统 网络连接正常 git已安装 macOS中安装了Homebrew Linux中安装了yum或者apt-get 提交一笔交易的步骤 克隆并构建Lib ...

  5. 硬件笔记之Thinkpad T470P更换2K屏幕

    0x00 前言 手上的Thinkpad T470P屏幕是1920x1080的屏幕,色域范围NTSC 45%,作为一块办公用屏是正常配置,但是考虑到色彩显示和色域范围,计划升级到2K屏幕. 2k屏幕参数 ...

  6. STM32F0_HAL库驱动描述——HAL驱动程序概述

    HAL库文件结构: HAL驱动文件: 外设驱动API文件和头文件:包含了常见主要的通用API,其中ppp表示外设名称,如adc.usart.gpio.irda等: stm32f0xx_hal_ppp. ...

  7. python实现DFA模拟程序(附java实现代码)

    DFA(确定的有穷自动机) 一个确定的有穷自动机M是一个五元组: M=(K,∑,f,S,Z) K是一个有穷集,它的每个元素称为一个状态. ∑是一个有穷字母表,它的每一个元素称为一个输入符号,所以也陈∑ ...

  8. 【题解】射击-C++

    Description 不难发现,豆豆能从很多事情中去思考数学,于是豆豆父母决定让他去练习射击,这是项需要集中注意力的运动,相信 能够让豆豆暂时脱离数学.学习射击的第一天就让豆豆产生 了浓厚的兴趣,射 ...

  9. Android 开发感想

    18年从.net转行做安卓开发,现在已经过去一年多了.说一下感想和心得体会! 一.开始 说一下我的经厉,从毕业开始出来工作一直是从事.net方向的开发工作.一开始也是没什么经验,加上也没有其他手艺就找 ...

  10. c++小游戏:洛谷彩票

    #include <cstdlib> #include <iostream> #include <cstdio> #include <cmath> #i ...