Gin是什么

Gin 是一个用 Go(Golang) 编写的轻量级 HTTP web 框架。它是一个类似于 martini 但拥有更好性能的 API 框架, 优于 httprouter,速度提高了近 40 倍。国人编码,拥有开发者友好的文档。如果你需要极好的性能,使用 Gin 吧。

Go世界里流行的Web框架,Github上有32K+star。 基于httprouter开发的Web框架。简单易用的轻量级。

官方中文文档传送门: https://gin-gonic.com/zh-cn/docs/

入门及开发环境

要想使用Golang Gin这个框架,前提是必须要得会Golang这门语言,如果你是C系列的开发者,那么恭喜你很快就能上手;如果你是PHP、python等其他开发者,那么你仅仅需要短短一周半月的时间就可以快去的搭建知识体系。;如果你还是在学习哪一门语言纠结不定,那我强烈推荐你下功夫学一下这一门高效简洁的语言,国家区块链政策的疏通下Golang开发者显得尤其抢手

我这里和以后文章,都默认有golang语言基础和web开发经验。代码示例基于以下环境:

Golang 1.13版本(含)以上

Gin 1.5版本(含)以上

macOS 10.15 Catalina 64位操作系统

Go Module 开发方式

Gin框架安装与使用

安装

下载并安装Gin:

go get -u github.com/gin-gonic/gin

第一个Gin示例:

package main

import (
    "github.com/gin-gonic/gin"
)

func main() {

    // 创建一个默认的路由引擎
    r := gin.Default()
    
    // GET:请求方式;/hello:请求的路径
    // 当客户端以GET方法请求/hello路径时,会执行后面的匿名函数
    r.GET("/hello", func(c *gin.Context) {
        // c.JSON:返回JSON格式的数据
        c.JSON(200, gin.H{
            "Blog":"www.flysnow.org",
            "message": "Gin:Hello world!",
        })
    })
    
    // 启动HTTP服务,默认在127.0.0.1:8889启动服务
    r.Run(":8889")
}

将上面的代码保存并编译执行,然后使用浏览器打开127.0.0.1:8080/hello就能看到一串JSON字符串。

RESTful API

我看到很多有关 Gin的博客到这边都开始介绍 RESTful API 。这边我也简单说一下

REST 代表的是一种软件架构风格,简单来说,REST的含义就是客户端与Web服务器之间进行交互的时候,使用HTTP协议中的4个请求方法代表不同的动作。

GET 用来获取资源
POST 用来新建资源
PUT 用来更新资源
DELETE 用来删除资源。

只要API程序遵循了REST风格,那就可以称其为RESTful API。目前在前后端分离的架构中,前后端基本都是通过RESTful API来进行交互。

例如,我们现在要编写一个学生管理的系统,我们可以查询对一位同学进行查询、创建、更新和删除等操作,我们在编写程序的时候就要设计客户端浏览器与我们Web服务端交互的方式和路径。按照经验我们通常会设计成如下模式:

请求方法URL含义
GET/get_student查询学生信息
POST/create_student创建学生记录
POST/update_student更新学生信息
POST/delete_student删除学生信息

同样的需求我们按照RESTful API设计如下:

请求方法URL含义
GET/student查询学生信息
POST/student创建学生记录
PUT/student更新学生信息
DELETE/student删除学生信息

Gin框架支持开发RESTful API的开发。

func main() {
    r := gin.Default()
    r.GET("/student", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "GET",
        })
    })

    r.POST("/student", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "POST",
        })
    })

    r.PUT("/student", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "PUT",
        })
    })

    r.DELETE("/student", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "DELETE",
        })
    })
}
Last modification:April 15th, 2020 at 09:49 am
如果觉得我的文章对你有用,请随意赞赏