Gin框架系列01:极速上手
Gin是什么?
Gin是Go语言编写的web框架,具备中间件、崩溃处理、JSON验证、内置渲染等多种功能。
准备工作
本系列演示所有代码都在Github中,感兴趣的同学可以自行查阅,欢迎大家一起完善。
https://github.com/pingyeaa/golang-examples/tree/master/gin
没有安装配置Go语言环境的同学请先自行安装,这里不再赘述。首先,我们来创建工作目录gin
。
mkdir gin && cd gin
然后用go mod
命令初始化项目,go mod
是Go语言的包管理工具,官方推荐使用,有了它就不再受GOPATH的限制,可以在任何目录初始化项目。
go mod init gin
接下来安装gin
库。
go get -u github.com/gin-gonic/gin
创建演示代码的入口文件main.go
,当前项目结构大致如下。
.
├── go.mod
├── go.sum
└── main.go
编写代码
工作准备就绪之后,来开始今天的代码编写,以经典代码hello word
为例。
实例化一个gin对象
r := gin.Default()
Default方法的主要作用是实例化一个带有日志、故障恢复中间件的引擎。
func Default() *Engine {
debugPrintWARNINGDefault()
engine := New()
engine.Use(Logger(), Recovery())
return engine
}
定义请求
定义一个GET请求的路由,参数一是路由地址,也就是在浏览器访问的相对路径,参数二是一个匿名函数,函数内部用于业务逻辑处理。
r.GET("/hello", func(c *gin.Context) {
})
我们就在函数内调用JSON方法返回数据。JSON的操作非常简单,参数一是状态码,参数二是JSON的内容。
r.GET("/hello", func(c *gin.Context) {
c.JSON(200, gin.H{
"msg": "Hello world!",
})
})
JSON内容可以通过gin提供的H方法来构建,非常方便。
// H is a shortcut for map[string]interface{}
type H map[string]interface{}
运行
Run方法最终会调用内置http
库的ListenAndServe
方法来监听端口,如果不传参数默认监听80端口,也可以通过参数来变更地址和端口。
r.Run(":8081")
测试
在浏览器访问localhost:8081
,如果看到如下提示即成功。
完整代码
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"msg": "Hello world!",
})
})
r.Run(":8081")
}
Go语言库代码示例,欢迎star
https://github.com/pingyeaa/golang-examples
感谢大家的观看,如果觉得文章对你有所帮助,欢迎关注公众号「平也」,聚焦Go语言与技术原理。
Gin框架系列01:极速上手的更多相关文章
- Gin框架系列02:路由与参数
回顾 上一节我们用Gin框架快速搭建了一个GET请求的接口,今天来学习路由和参数的获取. 请求动词 熟悉RESTful的同学应该知道,RESTful是网络应用程序的一种设计风格和开发方式,每一个URI ...
- Gin框架系列03:换个姿势理解中间件
什么是中间件 中间件,英译middleware,顾名思义,放在中间的物件,那么放在谁中间呢?本来,客户端可以直接请求到服务端接口. 现在,中间件横插一脚,它能在请求到达接口之前拦截请求,做一些特殊处理 ...
- Java 集合系列 01 总体框架
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- [系列] Gin框架 - 数据绑定和验证
目录 概述 推荐阅读 概述 上篇文章分享了 Gin 框架使用 Logrus 进行日志记录,这篇文章分享 Gin 框架的数据绑定与验证. 有读者咨询我一个问题,如何让框架的运行日志不输出控制台? 解决方 ...
- gin框架教程:代码系列demo地址
gin框架教程代码地址: https://github.com/jiujuan/gin-tutorial demo目录: 01quickstart 02parameter 03route 04midd ...
- 01 . Go框架之Gin框架从入门到熟悉(路由和上传文件)
Gin框架简介 Gin是使用Go/Golang语言实现的HTTP Web框架, 接口简洁, 性能极高,截止1.4.0版本,包含测试代码,仅14K, 其中测试代码9K, 也就是说测试源码仅5k左右, 具 ...
- GoWeb之gin框架
Gin 是一个 go 写的 web 框架,具有高性能的优点.官方地址:https://github.com/gin-gonic/gin 一.快速上手 安装 go mod init go get -u ...
- java io系列01之 "目录"
java io 系列目录如下: 01. java io系列01之 "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括 ...
- Google C++测试框架系列:入门
Google C++测试框架系列:入门 原始链接:V1_6_Primer 注 GTest或者Google Test: Google的C++测试框架. Test Fixtures: 这个词实在找不到对应 ...
随机推荐
- echart 之实现温度计
百度这个图表支持不是很好,有的需要自己写,看大神们实现温度计都是用 水球特效实现的我这里雕虫小计啊但是满足我了我的项目需求特此分享出来,可惜自己不是专业的前端 这是我的实现结果 好了上代码html: ...
- 【Java】机考常用知识
基本操作 数组 声明数组 方法一: int a[] = null; //声明一维数组 //int[] a = null; 也行,个人习惯 a = new int[10];//分配内存给一维数组 方法二 ...
- 一键制作镜像并发布到k8s
*:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...
- js 面向对象中,定义一个函数的过程
定义一个函数做的两件事:1: 实例化一个Function对象:2: 实例化一个Object对象,并给该函数扩展prototype属性指向这个构造函数 大致过程如图所示: 每一种引用类型(函数,对象,数 ...
- Yuchuan_Linux_C编程之六 Makefile项目管理
一.整体大纲 二.makefile的编写 一个规则 两个函数 三个变量 1. 一个规则 三要素:目标, 依赖, 命令 目标:依赖 命令: 第一条规则是用来生成终 ...
- Linux 宝典《最新版》
Linux 概述 什么是Linux?Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的Unix工具软 ...
- Python3对比合并Excel表格
##安装模块pip install pandas as pdpip install xlsxwriterpip install openpyxl ##带入模块import pandas as pdim ...
- C++ 重载关系操作符
#include <iostream> using namespace std; class AAA { public: AAA() //默认构造 { } AAA(int id, stri ...
- javascript的垃圾回收机制与内存管理
一.垃圾回收机制—GC Javascript具有自动垃圾回收机制(GC:Garbage Collecation),也就是说,执行环境会负责管理代码执行过程中使用的内存. 原理:垃圾收集器会定期(周期性 ...
- [日志分析]Graylog2采集Nginx日志 被动方式
graylog可以通过两种方式采集nginx日志,一种是通过Graylog Collector Sidecar进行采集(主动方式),另外是通过修改nginx配置文件的方式进行收集(被动方式). 这次说 ...