Web framework-Gin

一、Gin

Go Web--Go Module

        软件框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。

        框架就是:偷懒的程序员,写代码发现写过了写的就是那些玩意,码农,只是代码的搬运工,干脆将代码进行封装, 之后进行重复使用的过程。

        使用框架,可以大大的提升开发的效率。
        其实用GO语言标准库就可以完成web开发,但是为什么使用框架呢?框架就是一个别人搭建好的舞台,有很多现成的工具可以提供给你用,你在此基础上开发效率肯定更高。

Go的Web框架分两派:
一派是基于标准库net/http的,比如gin-gonic/gin,labstack/echo,astaxie/beego
一派是基于valyala/fasthttp的,更偏向于性能,比如kataras/ iris , gofiber/fiber

1、Gin框架

Gin框架文档说明

2、新建Gin项目

Go Web--Go Module

1、下载并安装 gin:

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

2、测试代码

package mainimport ("github.com/gin-gonic/gin"
)func main() {r := gin.Default()r.GET("/test", func(c *gin.Context) {c.JSON(200, gin.H{"msg": "test Gin success",})})r.Run()
}

访问测试http://localhost:8080/test

3、运行原理

package mainimport ("github.com/gin-gonic/gin"
)func Test(c *gin.Context) {c.JSON(200, gin.H{"msg": "test Gin success",})
}func main() {//Default()返回的是一个引擎Engine,它是框架非常重要的数据结构,是框架的入口。//引擎 - 框架核心发送机 - 默认服务器 - 整个web服务都是由它来驱动的//Default()底层调用了New(),相当于New()的升级,New()返回的是一个引擎,//在此基础上多增加了中间件处理-engine.Use(Logger(), Recovery())r := gin.Default()//r := gin.New()//路由:通过访问"/test"的GET请求走这一条处理逻辑,走对应的函数中的内容//"/test" : 路由规则  函数:路由函数//路由请求方式:GET、POST、DELETE、PATCH、PUT、OPTIONS、HEAD、Any//函数:可以直接写匿名函数,还可以在外部定义函数使用//r.GET("/test", func(c *gin.Context) {//	c.JSON(200, gin.H{//		"msg": "test Gin success",//	})//})r.GET("/test", Test)//启动引擎 ,服务器启动//Run可以传入参数:host+port//中间拼接的冒号一定不要忘记//r.Run()r.Run(":9999")//r.Run("192.168.0.171:9999")
}

启动测试

4、数据交互

4.1、模板文件

1、Engine的LoadHTMLFiles方法:(不推荐)
func (engine *Engine) LoadHTMLFiles(files ...string) {
加载子指定的模板文件
不定长参数,可以传多个字符串,使用这个方法需要指定所有要使用的html文件路径
2、Engine的LoadHTMLGlob方法:(推荐)
func (engine *Engine) LoadHTMLGlob(pattern string) {
加载子文件夹下的模板文件
只有一个参数,通配符,如:templates/* ,意思是找当前项目路径下templates文件夹下所有的html文件
3、渲染HTML模板文件:Context的HTML方法:
func (c *Context) HTML(code int, name string, obj any) {
第一个参数:状态码
第二个参数:渲染的文件名
第三个参数:传入参数,空接口可以接受任意类型

HTTP状态码

创建templates文件夹下新建hello01.html和hello02.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>Hello01 World!
</body>
</html>
package mainimport ("github.com/gin-gonic/gin"
)func Test(context *gin.Context) {context.HTML(200, "hello01.html", nil)
}func main() {r := gin.Default()//加载文件//r.LoadHTMLFiles("templates/hello01.html", "templates/hello02.html")r.LoadHTMLGlob("templates/*")r.GET("/test", Test)r.Run()
}

启动测试

 多级目录模板指定

1、如果有多级目录,比如templates下有demo01和demo02两个目录,如果要使用里面的html文件,
必须得在Load的时候指定多级才可以,
比如:
r.LoadHTMLGlob("templates/**/*")2、指定html文件,除了第一级的templates路径不需要指定,后面的路径都要指定
context.HTML(200, "demo02/hello02.html", nil)
3、在html中define定义目录
{{define "demo02/hello02.html"}}
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>Demo02 Hello02 World!
</body>
</html>
{{end}}

package mainimport ("github.com/gin-gonic/gin"
)func Test(context *gin.Context) {context.HTML(200, "demo02/hello02.html", nil)
}func main() {r := gin.Default()//加载文件//r.LoadHTMLFiles("templates/hello01.html", "templates/hello02.html")r.LoadHTMLGlob("templates/**/*")r.GET("/test", Test)r.Run()
}

启动测试

 

 

Golang学习+深入(一)

永远不要让无法完全信任的人知道你真正的实力有多少!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/39694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习|Softmax 回归的数学理解及代码解析

机器学习&#xff5c;Softmax 回归的数学理解及代码解析 Softmax 回归是一种常用的多类别分类算法&#xff0c;适用于将输入向量映射到多个类别的概率分布。在本文中&#xff0c;我们将深入探讨 Softmax 回归的数学原理&#xff0c;并提供 Python 示例代码帮助读者更好地理解和…

HarmonyOS NEXT新能力,一站式高效开发HarmonyOS应用

2023年8月6日华为开发者大会2023&#xff08;HDC.Together&#xff09;圆满收官&#xff0c;伴随着HarmonyOS 4的发布&#xff0c;华为向开发者发布了汇聚所有最新开发能力的HarmonyOS NEXT开发者预览版&#xff0c;并分享了围绕“一次开发&#xff0c;多端部署” “可分可合&a…

代码随想录算法训练营第60天|动态规划part17| 647. 回文子串、516.最长回文子序列、动态规划总结篇

代码随想录算法训练营第60天&#xff5c;动态规划part17&#xff5c; 647. 回文子串、516.最长回文子序列、动态规划总结篇 647. 回文子串 647. 回文子串 思路&#xff1a; 暴力解法 两层for循环&#xff0c;遍历区间起始位置和终止位置&#xff0c;然后还需要一层遍历判断…

【mysql】—— 表的增删改查

目录 序言 &#xff08;一&#xff09;Create操作 1、单行数据 全列插入 2、多行数据 指定列插入 3、插入否则更新 4、直接替换 &#xff08;二&#xff09;Retrieve操作 1、SELECT 列 1️⃣全列查询 2️⃣指定列查询 3️⃣查询字段为表达式 4️⃣为查询结果指定…

数据结构——堆

数据结构——堆 堆堆简介堆的分类 二叉堆过程插入操作 删除操作向下调整&#xff1a; 增加某个点的权值实现参考代码&#xff1a;建堆方法一&#xff1a;使用 decreasekey&#xff08;即&#xff0c;向上调整&#xff09;方法二&#xff1a;使用向下调整 应用对顶堆 其他&#…

Python Flask+Echarts+sklearn+MySQL(评论情感分析、用户推荐、BI报表)项目分享

Python FlaskEchartssklearnMySQL(评论情感分析、用户推荐、BI报表)项目分享 项目背景&#xff1a; 随着互联网的快速发展和智能手机的普及&#xff0c;人们越来越倾向于在网上查找餐厅、购物中心、酒店和旅游景点等商户的点评和评分信息&#xff0c;以便做出更好的消费决策。…

YOLOv8 : 网络结构

一. YOLOv8网络结构 1. Backbone YOLOv8的Backbone同样参考了CSPDarkNet-53网络&#xff0c;我们可以称之为CSPDarkNet结构吧&#xff0c;与YOLOv5不同的是&#xff0c;YOLOv8使用C2f(CSPLayer_2Conv)代替了C3模块(如果你比较熟悉YOLOv5的网络结构&#xff0c;那YOLOv8的网络…

【GitHub】Pycharm本地项目打包上传到Github仓库的操作步骤

文章目录 1、Pycharm端的设置操作2、Github端的设置操作3、Pycharm上配置Github4、Git本地项目至GitHub仓库5、前往Github中查看确认6、常见报错 1、Pycharm端的设置操作 通过CtrlAltS快捷组合键的方式&#xff0c;打开设置&#xff0c;导航到版本控制一栏中的Git&#xff0c;…

Gin安装解决国内go 与 热加载

get 方式安装超时问题&#xff0c;国内直接用官网推荐的下面这个命令大概率是安装不成功的 go get -u github.com/gin-gonic/gin 可以在你的项目目录下执行下面几个命令&#xff1a; 比如我的项目在E:\Oproject\zl cmd E:\Oproject\zl>就在目录下执行 go env -w GO111…

回归预测 | MATLAB实现GRU门控循环单元多输入多输出

回归预测 | MATLAB实现GRU门控循环单元多输入多输出 目录 回归预测 | MATLAB实现GRU门控循环单元多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现GRU门控循环单元多输入多输出&#xff0c;数据为多输入多输出预测数据&#xff0c;输入10个…

pytorch安装VAE项目详解

安装VAE项目 一、 基本环境二、代码来源三、搭建conda环境四、下载数据集五、启动项目六、其他相关问题 一、 基本环境 工具版本号OSwin 11pycharm2020.1GPU3050 二、代码来源 github地址为&#xff1a; https://github.com/AntixK/PyTorch-VAE/blob/8700d245a9735640dda458d…

ZooKeeper的应用场景(集群管理、Master选举)

5 集群管理 随着分布式系统规模的日益扩大&#xff0c;集群中的机器规模也随之变大&#xff0c;因此&#xff0c;如何更好地进行集群管理也显得越来越重要了。 所谓集群管理&#xff0c;包括集群监控与集群控制两大块&#xff0c;前者侧重对集群运行时状态的收集&#xff0c;后…

08 - 追加commit和修改最新的commit message

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 1. 追加提交2. 修改最新的commit message 1. 追加提交 将改动追加到上一次的commit 现在我已经修改了Readme文件并且已经add、commit操作&#xff0c;但是还没有push到远程仓库&#x…

【左神算法刷题班】第17节:在有序二维数组中查找目标值、等于目标字符串的子序列个数

第17节 题目1&#xff1a;在有序二维数组中查找目标值 给定一个每一行有序、每一列也有序&#xff0c;整体可能无序的二维数组 再给定一个数num&#xff0c; 返回二维数组中有没有num这个数 例子 数组如下&#xff0c;找 6 是否存在。 1 3 5 7 2 4 6 13 3 9 14 …

“心理健康人工智能产学研创新联盟”揭牌成立|深兰科技

8月14日上午&#xff0c;“2023树洞救援年会”在上海举行&#xff0c;会上举行了“心理健康人工智能产学研创新联盟”的签约和揭牌仪式。“树洞行动救援团”创始人深兰科技科学院智能科学首席科学家、荷兰阿姆斯特丹自由大学人工智能系终身教授黄智生&#xff0c;深兰科技集团创…

Git 常用操作

一、Git 常用操作 1、Git 切换分支 git checkout命令可以用于三种不同的实体&#xff1a;文件&#xff0c;commit&#xff0c;以及分支。checkout的意思就是对于一种实体的不同版本之间进行切换的操作。checkout一个分支&#xff0c;会更新当前的工作空间中的文件&#xff0c;…

68 # 中间层如何请求其他服务

前端 ajax 有跨域问题&#xff0c;可以先访问中间层&#xff0c;在通过 node 去请求别的服务端口&#xff0c;可以解决跨域问题 编写中间层调用 // 中间层的方式const http require("http");// http.get 默认发送 get 请求 // http.request 支持其他请求格式 postl…

Java基础知识实际应用(学生信息管理系统、猜拳小游戏、打印日历)

一、Java学生信息管理系统 这个系统包含了添加、修改、删除、查询和显示所有学生信息等功能。您可以在此基础上进行修改和完善&#xff0c;以适应您的需求。 import java.util.Scanner;public class StudentManagementSystem {private static Scanner scanner new Scanner(S…

haproxy负载均衡

1、配置环境 作用环境windows测试  192.168.33.158 172.25.0.11 haproxy负载均衡haproxy&#xff1a;2.8.1&#xff0c;centos7172.25.0.31web服务器1--rs1Apache&#xff1a;2.4&#xff0c;redhat9172.25.0.32web服务器2--rs2Apache&#xff1a;2.4 &#xff0c; redhat9 2、…

Azure使用CLI创建VM

使用CLI创建VM之前&#xff0c;确保资源中的IP资源已经释放掉了&#xff0c;避免创建的过程中没有可以利用的公共IP地址打开 cloudshell ,并输入创建CLI的命令如下&#xff0c;-n指定名称&#xff0c;-g指定资源组&#xff0c;image指定镜像&#xff0c;admin-usernam指定用户名…