go语言 常用的web框架

go语言 常用的web框架

    • 1. Gin
    • 2. Echo
    • 3. Beego
    • 4.GoFrame

Go语言有许多流行的web框架,以下是其中几个:

1. Gin

  • Gin是一个高性能的HTTP web框架,具有简洁的API和快速的路由引擎。它也有许多中间件和插件,方便开发者进行功能扩展。
  • 代码示例:
    package mainimport ("github.com/gin-gonic/gin""net/http"
    )func main() {r := gin.Default()r.GET("/", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "Hello, Gin!",})})r.Run(":8080")
    }
    
  • 使用步骤:
    • 安装Gin:go get -u github.com/gin-gonic/gin
    • 创建main.go文件并粘贴上述代码
    • 在终端中运行:go run main.go

2. Echo

  • Echo是一个快速而简洁的Web框架,它具有强大的路由和中间件支持。它的设计目标是提供一个简单、易用、高性能和可扩展的框架。
  • 代码示例:
    package mainimport ("net/http""github.com/labstack/echo/v4"
    )func main() {e := echo.New()e.GET("/", func(c echo.Context) error {return c.String(http.StatusOK, "Hello, Echo!")})e.Start(":8080")
    }
    
  • 使用步骤:
    • 安装Echo:go get -u github.com/labstack/echo/v4
    • 创建main.go文件并粘贴上述代码
    • 在终端中运行:go run main.go

3. Beego

  • Beego是一个开源的Web框架,它具有高性能、灵活的API设计和强大的功能。它支持自动路由、ORM、会话管理、国际化、验证等功能。
  • 代码示例:
    package mainimport ("github.com/astaxie/beego"
    )func main() {beego.Router("/", &MainController{})beego.Run(":8080")
    }type MainController struct {beego.Controller
    }func (c *MainController) Get() {c.Data["message"] = "Hello, Beego!"c.TplName = "index.tpl"
    }
    
  • 使用步骤:
    • 安装Beego:go get -u github.com/astaxie/beego
    • 创建main.go文件并粘贴上述代码
    • 创建index.tpl文件,内容为<h1>{{.message}}</h1>
    • 在终端中运行:go run main.go

4.GoFrame

GoFrame是一款基于Go语言的开源Web框架,它提供了一套完整的工具和组件,用于简化Web应用程序的开发过程。下面将详细介绍GoFrame框架的使用,并提供一些代码示例。

一、安装GoFrame:
首先,你需要确保已经安装了Go语言的开发环境。然后,可以使用以下命令安装GoFrame框架:

go get -u github.com/gogf/gf

二、创建一个简单的Web应用:
下面是一个简单示例,用于创建一个基于GoFrame的Web应用程序。

1.创建一个名为main.go的文件,并添加以下代码:

package mainimport ("github.com/gogf/gf/frame/g""github.com/gogf/gf/net/ghttp"
)func main() {s := g.Server()s.BindHandler("/", func(r *ghttp.Request) {r.Response.Write("Hello, GoFrame!")})s.Run()
}

2.在终端中进入该文件所在的目录,并运行以下命令启动应用程序:

go run main.go

3.在浏览器中访问http://localhost:8080/,即可看到输出结果Hello, GoFrame!。
以上示例代码中,首先导入了ghttp和g模块,分别提供了HTTP服务器和一些常用的工具函数。然后,创建了一个服务器实例s,并使用BindHandler绑定了一个根路径的处理函数,该处理函数接收一个*ghttp.Request作为参数,并向响应中写入一条消息。最后,调用s.Run()启动服务器。

三、路由和中间件:
GoFrame框架支持路由功能,可以定义多个路由规则,并为每个路由规则绑定相应的处理函数。

1.添加一个路由规则:

s.BindHandler("/user/info/{id}.html", func(r *ghttp.Request) {id := r.Get("id")r.Response.Write("User id is: " + id)
})

2.使用中间件:

s.BindMiddleware("/user/*any", func(r *ghttp.Request) {r.Response.Write("Before executing handler function...")r.Middleware.Next()r.Response.Write("After executing handler function...")
})

上述示例中,第一个示例添加了一个带有{id}参数的路由规则,当访问/user/info/123.html时,会将123作为参数传递给处理函数,并输出"User id is: 123"。第二个示例添加了一个中间件,该中间件会在处理函数执行前后输出相应的提示信息。

四、模板引擎:
GoFrame框架内置了一套简单而强大的模板引擎,可以方便地用于生成动态页面。

1.创建一个模板文件index.html,内容如下:

<html>
<head><title>GoFrame Template</title>
</head>
<body><h1>{{.Title}}</h1><p>{{.Content}}</p>
</body>
</html>

2.修改main.go文件,添加以下代码:

s.BindHandler("/index", func(r *ghttp.Request) {r.Response.Assign("Title", "Welcome to GoFrame")r.Response.Assign("Content", "This is a template example")r.Response.RenderFile("index.html")
})

3.运行应用程序,并访问http://localhost:8080/index,即可看到模板渲染后的结果。

上述示例中,首先创建了一个模板文件index.html,使用{{.}}表示模板中的变量,然后在处理函数中通过Response.Assign方法为模板变量赋值,最后使用Response.RenderFile方法渲染输出。

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

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

相关文章

基于Python的美术馆预约系统【附源码】

效果如下&#xff1a; 系统首页界面 系统注册页面 美术馆详细页面 公告信息详细页面 后台登录界面 管理员主界面 美术馆管理界面 预约参观管理界面 研究背景 随着文化娱乐活动的日益丰富&#xff0c;美术馆作为展示艺术作品、传播文化的重要场所&#xff0c;其管理和服务模式…

字段临时缓存包装器

前言 在实际开发中&#xff0c;我们有时候存在一种需求&#xff0c;例如对于某个字段&#xff0c;我们希望在某个明确的保存节点前对字段的修改都仅作为缓存保留&#xff0c;最终是否应用这些修改取决于某些条件&#xff0c;比如玩家对游戏设置的修改可能需要玩家明确确认应用修…

代码随想录 102. 沉没孤岛

102. 沉没孤岛 #include<bits/stdc.h> using namespace std;void dfs(vector<vector<int>>& mp, vector<vector<int>>& visit, int y, int x){if (mp[y][x] 0 || visit[y][x] 1) return;if (mp[y][x] 1 && visit[y][x] 0) …

go语言protoc的详细用法与例子

一. 原来的项目结构 二. 选择源proto文件及其目录&目的proto文件及其目录 在E:\code\go_test\simple_demo\api 文件夹下&#xff0c;递归创建\snapshot\helloworld\v1\ad.pb.go E:\code\go_test\simple_demo> protoc --go_outpathssource_relative:./api .\snapshot\h…

[OS] EXPORT_SYMBOL()

在 Linux 内核中&#xff0c;EXPORT_SYMBOL() 用于将模块中的函数或变量导出&#xff0c;使得其他内核模块能够使用这些导出的符号。这对于模块之间共享功能或数据非常有用。给出的代码示例展示了如何使用 EXPORT_SYMBOL() 将变量和函数导出供其他模块使用。 /* ... */ int GL…

Dolma:包含三万亿Token的语言模型预训练研究开放语料库

前言 原论文&#xff1a;Dolma: an Open Corpus of Three Trillion Tokens for Language Model Pretraining Research 摘要 关于训练当前最佳性能语言模型的预训练语料库的信息很少被讨论——商业模型很少详细说明它们的数据&#xff0c;即使是开源模型也往往在没有训练数据…

Ubuntu开机进入紧急模式处理

文章目录 Ubuntu开机进入紧急模式处理一、问题描述二、解决办法参考 Ubuntu开机进入紧急模式处理 一、问题描述 Ubuntu开机不能够正常启动&#xff0c;自动进入紧急模式&#xff08;You are in emergency mode&#xff09;。具体如下所示&#xff1a; 二、解决办法 按CtrlD进…

基于开源大型lmm模型生成标签对InternVL2-1B等轻量lmm模型进行微调

基于开源大型lmm模型生成标签对InternVL2-1B等轻量lmm模型进行微调,提升InternVL2-1B等轻量lmm模型的能力。本实验在window下,基于3060 12g显卡进行实验。基于qwen2-vl 7b模型生成标签(电脑显存大的话可以考虑qwen2-vl 72b模型),然后对InternVL2-1B进行Lora微调。以voc201…

Perl 子程序(函数)

Perl 子程序&#xff08;函数&#xff09; Perl 是一种高级、解释型、动态编程语言&#xff0c;广泛用于CGI脚本、系统管理、网络编程、 finance, bioinformatics, 以及其他领域。在Perl中&#xff0c;子程序&#xff08;也称为函数&#xff09;是组织代码和重用代码块的重要方…

《机器学习》周志华-CH10(降维与度量学习)

10.1k近邻学习 k k k近邻(k-Nearest Neighbor,简称kNN)&#xff0c;监督学习。 工作机制&#xff1a;给定测试样本&#xff0c;基于某种距离度量找出训练集中与其最靠近的 k k k个训练样本&#xff0c;基于这些”邻居“预测。 { 分类任务&#xff1a;选择”投票法“。 k 个样本…

MySQL之复合查询与内外连接

目录 一、多表查询 二、自连接 三、子查询 四、合并查询 五、表的内连接和外连接 1、内连接 2、外连接 前面我们讲解的mysql表的查询都是对一张表进行查询&#xff0c;即数据的查询都是在某一时刻对一个表进行操作的。而在实际开发中&#xff0c;我们往往还需要对多个表…

如何使用MATLAB代码生成器生成ADRC跟踪微分器(TD) PLC源代码(SCL)

ADRC线性跟踪微分器TD详细测试 ADRC线性跟踪微分器TD详细测试(Simulink 算法框图+CODESYS ST+博途SCL完整源代码)-CSDN博客文章浏览阅读383次。ADRC线性跟踪微分器(ST+SCL语言)_adrc算法在博途编程中scl语言-CSDN博客文章浏览阅读784次。本文介绍了ADRC线性跟踪微分器的算法和…

关于启动flask应用,其他主机无法访问flask应用的错误记录

目录 前言解决办法 前言 因为一些原因&#xff0c;接触到了web应用框架flask。在一台主机上启动flask app&#xff0c;尝试过将app.run中的host参数设置为127.0.0.1;0.0.0.0。甚至是服务器主机的ip&#xff0c;可结果是只有服务器本机才能访问服务&#xff0c;其他不管是外网&…

Bolt.new:终极自动化编程工具

兄弟们&#xff0c;终极写代码工具来了—— Bolt.new&#xff01;全方位的编程支持&#xff1a; StackBlitz 推出了 Bolt․new&#xff0c;这是一款结合了 AI 与 WebContainers 技术的强大开发平台&#xff0c;允许用户快速搭建并开发各种类型的全栈应用。 它的主要特点是无需…

Anaconda的安装与环境设置

文章目录 一、Anaconda介绍二、Anaconda环境搭建1. 下载Anaconda(1)官网下载(2)清华大学镜像 2. 安装Anaconda3.配置环境变量4.检验conda是否安装成功5.更改镜像源6.若菜单栏没有conda prompt 三、虚拟环境1.创建、查看、删除虚拟环境2.激活、退出虚拟环境 四、CUDA、Pytorch、…

JS 入门

文章目录 JS 入门一、JS 概述1、JS 特点2、JS 组成3、JS 初体验4、HTML引入JS 二、JS 基础语法1、变量声明2、基本数据类型3、引用数据类型1&#xff09;数组2&#xff09;对象3&#xff09;函数4&#xff09;null 4、运算符5、条件判断6、循环语句 三、JS 函数0、JS 函数特点1…

上传文件失败,请检查阿里云配置信息:[The specified bucket is not valid.

-- 十一假期结束 -- 去年今日此门中&#xff0c;人面挑花相应红。 -- 人面不知何处去&#xff0c;桃花依旧笑春风。

Pikachu-unsafe upfileupload-getimagesize

什么是getimagesize()&#xff1f; getimagesize()是PHP中用于获取图像的大小和格式的函数。它可以返回一个包含图像的宽度、高度、类型和MIME类型的数组。 由于返回的这个类型可以被伪造&#xff0c;如果用这个函数来获取图片类型&#xff0c;从而判断是否时图片的话&#xff…

虚拟机 VMware 安装 macOS

macOS 界面 MAC OS IOS下载&#xff1a; amacOS Monterey by Techrechard.comwmacOS Monterey by Techrechard.com 下载&#xff1a;Unlocker-v2.0.1-x64 Mac OS X 虚拟机中更改屏幕分辨率 终端输入命令&#xff1a; sudo defaults write /Library/Preferences/com.apple.w…

vim编辑器安装,并修改配置使其默认显示行数

centOS默认是未安装vim编辑器的&#xff0c;而vim编辑器相比vi编辑器更易用一些&#xff0c;如需使用vim编辑器&#xff0c;需要进行安装。 1.需要先配置本地yum源&#xff0c;参见如下链接&#xff1a; 点击查看如何配置本地yum源 2.安装vim编辑器&#xff0c;并修改配置。…