Gin框架: 快速搭建起一个Web应用环境及处理不同类型的响应

GIN框架介绍以及使用 李文周的博客 阅读详情

Gin 框架简介

  • Gin是Golang应用最为广泛的框架之一
  • Gin是轻量级http web框架,简易而高性能,专注于处理高并发场景

Gin框架环境搭建

Gin框架搭建并运行一个Web应用

package main

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

func main() {
	// 创建一个默认的路由引擎
	r := gin.Default()
	// 配置根路由
	r.GET("/", func(c *gin.Context) {
		c.JSON(200, gin.H{
			// c.JSON:返回 JSON 格式的数据
			"message": "Hello Gin!", 
		})
	})
	// 启动 HTTP 服务,默认在 0.0.0.0:8080 启动服务
	r.Run()
	// r.Run(":8081") // 这样可以改变运行的端口
}
  • 运行:$ go run main.go
  • 访问: http://localhost:8080
  • 这是最简单的Gin框架运行效果,页面输出

基于RESTful API的路由响应及参数处理


1 )一般常用的 method 如下,基于此设计路由响应

  • GET(SELECT) 从服务器取出资源(一项或多项)
  • POST(CREATE) 在服务器新建一个资源
  • PUT(UPDATE) 在服务器更新资源(客户端提供改变后的完整资源)
  • DELETE(DELETE) 从服务器删除资源

路由基础配置如下:

package main

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

var statusOK = http.StatusOK

func main() {
	// 创建一个默认的路由引擎
	r := gin.Default()
	
	//配置路由
	r.GET("/", func(c *gin.Context) {
		c.String(statusOK, "Hello:%v", "gin")
	})
	r.GET("/user", func(c *gin.Context) {
		c.String(statusOK, "User")
	})
	r.POST("/add", func(c *gin.Context) {
		c.String(statusOK, "add Post")
	})
	r.PUT("/edit", func(c *gin.Context) {
		c.String(statusOK, "edit Put")
	})
	r.DELETE("/delete", func(c *gin.Context) {
		c.String(statusOK, "delete")
	})
	r.Run() //启动一个web服务
}

2 )参数匹配处理如下:

package main

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

var statusOK = http.StatusOK

func main() {
	// 创建一个默认的路由引擎
	r := gin.Default()
	
	//配置路由
	r.GET("/", func(c *gin.Context) {
		c.String(statusOK, "Hello:%v", "gin")
	})
	// 访问示例:/user?id=3
	r.GET("/user", func(c *gin.Context) {
		id := c.Query("id")
		c.String(statusOK, "User: %s", id)
	})
	// 访问示例:/book/5
	r.GET("/book/:id", func(c *gin.Context) {
		id := c.Param("id")
		c.String(statusOK, "Book: %s", id)
	})
	r.Run() //启动一个web服务
}
  • 这里有两种参数类型,Query 和 Param 两种
    • Query不涉及路由处理
    • Param 要配置路由,属于动态路由
  • 这里用GET形式演示,其他形式获取方式一致

响应不同类型的数据


1 )这里声明下目录结构,方便举例

yourGinProject/ ·······························  根目录
  ├── go.mod ··································  go mod 文件
  ├── go.sum ··································  go sum 文件
  ├── main.go ·································  main 文件
  └── tpls ····································· html模板目录
        └──── news.html ·······················  新闻页面模板文件

2 )全量代码演示

main.go

package main

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

type User struct {
	Id      int    `json:"id"`
	Name    string `json:"name"`
	Hobby   string `json:"hobby"`
}

var statusOK = http.StatusOK

func main() {
	// 创建一个默认的路由引擎
	r := gin.Default()
	// 配置模板的文件
	r.LoadHTMLGlob("tpls/*")
	// r.LoadHTMLFiles("tpls/news.html") // 同上,二选一

	// 1. 响应String报文,根路由
	r.GET("/", func(c *gin.Context) {
		c.String(statusOK, "Welcome to %v", "Home Page")
	})

	// 2. 响应Json报文,3种方式
	r.GET("/json1", func(c *gin.Context) {
		c.JSON(statusOK, map[string]interface{} {
			"success": true,
			"msg":     "Gin JSON 1",
		})
	})
	r.GET("/json2", func(c *gin.Context) {
		c.JSON(statusOK, gin.H{
			"success": true,
			"msg":     "Gin JSON 2",
		})
	})
	r.GET("/json3", func(c *gin.Context) {
		u := &User{
			Id:      1,
			Name:    "Wang",
			Hobby:   "swimming",
		}
		c.JSON(statusOK, u)
	})

	// 3. 响应JSONP报文
	r.GET("/jsonp", func(c *gin.Context) {
		u := &User{
			Id:     2,
			Name:    "Lee",
			Hobby:   "ping pang",
		}
		c.JSONP(statusOK, u)
	})

	// 4. 响应xml报文
	r.GET("/xml", func(c *gin.Context) {
		c.XML(statusOK, gin.H{
			"success": true,
			"msg":     "Hello XML",
		})
	})
	
	// 5. 响应html报文
	r.GET("/news", func(c *gin.Context) {
		// r.LoadHTMLGlob("tpls/*") // 可在这里配置,推荐在顶层统一配置
		// r.LoadHTMLFiles("tpls/news.html") 二选一
		c.HTML(statusOK, "news.html", gin.H{
			"title": "新闻标题",
			"content": "这是详细的新闻内容",
		})
	})

	r.Run()
}

3 )不同响应释义

  • 3.1 响应String报文,Context.String

    • 访问 /
    • 响应: Welcome to Home Page
  • 3.2 响应Json报文,Context.JSON

    • 访问:/json1, /json2, json3
    • 这里设定了3种方式, 它们的目的具有一致性
      • map[string]interface{}
      • gin.H
      • &User
  • 3.3 响应JSONP报文,Context.JSONP

    • 访问:/jsonp?callback=fn 这里的 fn 可以是任意字符串
      • fn 作为函数名挂载到浏览器window对象
    • 响应 fn({"id":2,"name":"Lee","hobby":"ping pang"});
  • 3.4 响应XML报文,Context.XML

    • 访问 /xml, 并响应
      <map>
      	<success>true</success>
      	<msg>Hello XML</msg>
      </map>
      
  • 3.5 响应html报文,Context.HTML

    • 访问 /news
    • 注意 tpls/news.html 中的配置
      • 这里是最简洁配置,生产环境请使用完整的html文档结构
        <h1>News Page</h1>
        <h3>标题:{{.title}}</h3>
        <p>内容:{{.content}}</p>
        
    • r.LoadHTMLGlob("tpls/*") 可配置在当前,也可配置在顶部,位置选其一
    • r.LoadHTMLFiles("tpls/news.html") 这个和上面二选一,但是这里使用逗号 , 分隔多个,可逐个指定
    • 这两个API在生产环境配置到顶部

Go搭建Web应用中实用的热更工具(辅助开发)

golang——Gin框架及路由介绍 gin框架中采用的路由库是基于httprouter做的支持Restful风格的API,意思是"表面层状态转化",是一个互联网应用程序的API设计理念:URL定位资源。可以创建路由组,为了管理相同的URL。import ("net/http"//将应用切换到“发布模式”以提升性能//创建路由//默认使用了两个中间件Logger(),Recovery()})})//路由组1})})//路由组2})})//监听端口,默认绑定端口8080。 阅读详情

相关推荐

golang学习笔记10——golang 的 Gin 框架,快速构建高效 Web 应用

Gin 是一个用 Go 语言编写的 HTTP Web 框架,它具有快速、高效、灵活等特点。Gin 基于 httprouter 实现了路由功能,并提供了中间件、请求处理、响应生成等一系列功能,使得开发者能够快速构建出高性能的 Web 应用。Gin 框架是一个非常强大的 Go 语言 Web 框架,它提供了丰富的功能和简洁的 API,使得开发者能够快速构建出高效的 Web 应用。本文介绍了 Gin 框架的基本使用方法,包括安装、创建 Web 应用、使用中间件和获取请求参数等。

GoppViper的博客 2030

Gin 框架介绍与快速入门

TOC]Gin是一个轻量级的Go语言Web框架,它具有高性能和简洁的设计。由于其快速的路由匹配和处理性能,Gin成为Go语言中最受欢迎的Web框架之一。

淘小欣的博客 6606

【Gin框架入门到精通系列01】Gin框架介绍与环境搭建

本文是Gin框架入门到精通系列的第一篇,系统介绍Gin框架的基本概念、核心特性以及环境搭建。无论你是Go语言新手还是有经验的开发者,都能通过本文快速掌握Gin框架的基础知识,创建并运行你的第一个Gin应用。

GopherTribe的博客 1560

【go语言】Gin框架介绍和使用

Gin中的中间件必须是一个 gin.HandlerFunc 类型的。// StatCost 是一个统计耗时请求耗时的中间件c.Set("name", "小王子") // 可以通过c.Set在请求上下文中设置值,后续的处理函数能够取到该值// 调用该请求的剩余处理程序c.Next()// 不调用该请求的剩余处理程序// 计算耗时。

加油,考上985的研究生 5024

30天学会Go--第8天 GO语言 Gin Web框架学习与实践

Gin 是一个高性能的 Go Web 框架,基于 HTTP 路由和中间件设计,支持快速开发 Web 应用和 RESTful API。本篇文章将带你快速学习 Gin 的基本用法,并通过实践构建一个简单的 Web 应用。文档 | Gin Web FrameworkGin框架的官方中文文档学习笔记很全,推荐去官网学习30天学会Go–第6天 GO语言 RESTful API 学习与实践-优快云博客30天学会Go–第7天 GO语言 Redis 学习与实践-优快云博客高性能:Gin 基于net/http。

Xiao651的博客 1528

Gin项目实战02- 结构搭建

gin 实战项目

chenangdaka的博客 1696

Web 框架 Gin | Gin快速入门

大家好!我是 xcbeyond, xcbeyond 就是我,大家也可以叫我超哥!本文首发于我的博客:Gin 介绍 1、Gin 概述 Gin 是一个基于 Go 语言编写的 Web 框架,与 martini 框架类似,但拥有更好的性能,借助高性能的 httprouter,速度提升了近 40 倍。如果你追求高性能和开发效率,你会爱上 Gin 框架。 1.1 功能特性 快速 基于Radox树(一种更节省空间的 Trie 树结构)的路由,内存占用更小。 没有反射。 可预测的 API 性能。 中间件支.

xcbeyond|疯狂源自梦想,技术成就辉煌 1921

【9.1】Golang后端开发系列--Gin快速入门指南

本文是 Go 语言中 Gin 后端开发的快速入门指南。首先介绍了 Gin 框架,包括其性能卓越、中间件支持和简洁易用的特点。接着讲述了安装步骤,涵盖 Go 环境安装与 Gin 的 Go Modules 安装。随后阐述路由基础,如基本路由、路由参数和查询参数的使用。还涉及请求处理和响应,包括 JSON 数据处理和表单数据处理。同时讲解中间件使用,含内置和自定义中间件及执行顺序。此外,还有模板渲染、错误处理、文件上传下载及测试部署等,通过代码示例及解释,助力开发者快速上手 Gin 后端开发。

Grit_my的博客 2294

【Gin】Web框架开发快速入门

主要介绍go work工作区、Web路由、请求、响应等demo

theaipower的博客 1万+

gin-gonic/gin使用详解

​ Gin 是一个用 Go (Golang) 编写的 HTTP web 框架。它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter,速度提高了近 40 倍。如果你需要极好的性能,使用 Gin 吧。​ gin的github地址:https://github.com/gin-gonic/gin​ 在项目中使用gin框架只需要下面三步:​ 第一步:运行下面指令安装gin(注意go的版本要在1.15以上)...

qq_36305027的博客 2047

Gin入门指南:从零开始快速掌握Go Web框架Gin

中间件函数用于记录日志。路由和请求处理:Gin 提供了简单而灵活的路由功能,可以方便地定义不同URL路径的处理函数,并支持 GET、POST 等各种HTTP请求方法。函数用于返回成功结果,它接收 Gin 的上下文对象,以及三个自定义的参数,分别为状态码、提示信息和数据。一般来说,我们需要在处理请求的路由函数中使用 defer 语句将捕获的异常记录下来,所以我们可以通过中间件实现全局的异常处理。参数绑定和验证:Gin 提供了强大的参数绑定和验证功能,可以方便地将请求参数绑定到结构体中,并进行数据验证和转换。

赵士杰——成功并非一蹴而就,而是在持之以恒的努力中逐渐实现。 3085

Go -【gin】框架搭建基本使用

Gin是一个快速的Golang web框架,它使用了httprouter来处理路由和速度,而不是使用内置的Go路由。

Mr_WoLong 7670

Gin框架入门:一个简单使用示例

本文还有配套的精品资源,点击获取 简介:Gin框架是Go语言中一个流行的高性能HTTP web框架。本示例介绍了Gin的核心特性以及如何快速搭建一个基础的web应用。内容包括安装Gin、创建web服务器、定义路由、处理请求与响应、支持路径与查询参数、处理文件上传和表单数据、中间件链的使用以及错误处理机制。通过这个示例,读者可以初步了解Gin框架的使用方法,并在实践中进一步掌...

weixin_42433737的博客 1431

Golang | Web开发之Gin框架快速入门基础实践

描述: Gin 是一个用 Go (Golang) 编写的 web 框架, 它提供类似Martini的API,但性能更佳,速度提升高达40倍, 号称是Go语言最快的全功能Web框架,所以如果你是性能和高效的追求者,你会爱上 Gin.官网地址: https://gin-gonic.com/帮助文档: https://gin-gonic.com/zh-cn/docs/

全栈工程师修炼指南-IT知识分享 1865

基于 Gin 框架的 Go 语言 Web 项目脚手架搭建指南

Go语言(又称Golang)是由Google于2009年推出的一种静态类型、编译型、并发型的开源编程语言。其设计目标是简洁高效,适用于大规模系统开发。Go语言凭借其轻量级的协程(goroutine)、高效的垃圾回收机制和简洁的语法,迅速在后端服务、云原生、微服务等领域占据一席之地。Gin是一个基于Go语言构建的高性能Web框架,以其卓越的路由性能和简洁的API设计受到开发者青睐。它基于HTTP路由器(如httprouter)实现,性能远超许多其他Go Web框架。

weixin_42601702的博客 1119

保姆级教程:用YOLOv5s训练PCB缺陷检测模型(附北大公开数据集)

本文提供了一份基于YOLOv5s的PCB缺陷检测模型从零开始的完整实战教程。详细解析了如何使用北大公开数据集,涵盖环境搭建、数据处理、模型训练、性能评估及优化部署全流程,并针对工业场景中常见的类别不均衡问题给出了具体解决方案,旨在帮助开发者快速构建高精度的自动化质检系统。

weixin_28285943的博客 308

gin搭建web工程

手把手教你搭建go版web工程

weixin_43996530的博客 929

Redis+Unity 数据库搭建

游戏中需要存放排行榜等数据,而且是实时存放,所以就涉及到数据库的问题。这里找服务器大神了解到可以用Redis来做存储,免费的效率极高。

chaixinke的专栏 879

Gin:GoLang语言Web应用快速入门

通过以上步骤,你就成功使用Go的Gin框架创建了一个基本的Hello World程序。这个程序创建了一个web服务器,监听8080端口,并且对根路径()的GET请求响应“Hello World”。Gin是一个非常强大且易用的web框架,非常适合用于构建RESTful API和web应用程序。

weixin_54703767的博客 1803

SAP PP模块MRP控制参数实战指南:从NETCH到NEUPL的深度解析

本文深入解析SAP PP模块中MRP控制参数的配置与应用,涵盖NETCH、NETPL和NEUPL三种运行模式的优化策略。通过实战案例和参数对比,帮助用户提升物料需求计划的效率和准确性,优化库存周转率和生产交付能力。

weixin_28419039的博客 245

OpenCV安装配置教程VS2022(超级顺利)

博主最开始没打算写这篇博客,只是想简单的在网上找一下最新版的OpenCV的安装配置教程,适用于VS2022的,但是我搜了一早上,也没搜到一个能让我成功安装配置的,看了很多很多文章,根本就没有几篇有用的。所以没办法了,只能自己研究了,于是就整理了这篇博客,希望能帮到和我一样的人,这就是博主一直信奉的利他精神!

weixin_47367099的博客 5万+

基于gin框架和gorm的web开发实战

学习框架——Gin、GORM框架——搭建好的一个舞台,不需要重复造轮子我们在舞台上表演,只需要关注表演的内容,不需要关注舞台怎么搭建的Gin 是一个用 Go (Golang) 编写的 Web 框架。它具有类似 martini 的 API,性能要好得多,多亏了httprouter,速度提高了 40 倍。如果您需要性能和良好的生产力,您一定会喜欢 Gin。在本节中,我们将介绍 Gin 是什么,它解决了哪些问题,以及它如何帮助你的项目。"Gin 是一个用 Go (Golang) 编写的 Web 框架。

2301_79819426的博客 1579

【CSP-J/S】复赛注意事项 上机文件组织形式

每年/S 复赛都有很多同学因为一些小失误导致一年的努力付之东流。Tony老师整理了一些复赛容易踩坑的点,或许对你有帮助!

星卯教育-信奥教练tony 1万+
上一篇: 前端架构: 脚手架框架之yargs的11种基础核心特性的应用教程
下一篇: 前端架构: 脚手架框架之yargs高级应用教程
Wang's Blog
博客等级 码龄12年 7434粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值