GOLANG开发 - Echo 框架 入门

GIN与Echo:选择正确Go框架的指南 本指南将详细介绍每个框架的特性、速度、社区热度以及它们各自擅长的项目类型。最后,您将能够为您的下一个Web项目选择完美的框架! 阅读详情
AI摘要

本文介绍了Golang的Echo框架,包括项目初始化、安装、路由创建、自定义方法、静态资源管理、数据绑定、Cookie设置以及模板渲染的基本用法。

        好久没有更新过了,今年年底特别的忙,不知道为啥,太忙了简直,抽空出来赶紧更新一篇关于golang的文章,本次主将的是即Gin框架和Beego框架之后的有一个框架,叫 Echo框架

        学习过PHP的同学肯定对这个词不陌生,在PHP中,这个是输出数据的一个函数,然而本次讲的Echo和PHP中echo没有半毛钱关系,这是一个Golang的框架,后面我们来仔细讲解一下Echo框架

1.项目初始化:

        和前面几个框架一样,首先需要使用gorm命令初始化项目:go mod init 项目名称


2.安装echo框架:

        命令:go get -u github.com/labstack/echo/v4

3.创建 Echo 项目:

创建并运行文件,看到如图所示案例则表示Echo框架已经安转并运行成功

4.创建路由:

func main() {
    e := echo.New()
    fmt.Println("测试数据")
    e.GET("/index", func(c echo.Context) error {
        return c.String(200, "Hello, World!")
    })
    // 启动服务器
    e.Start(":8080")
}

输出结果:Hello, World!

5.自定义方法:

func main() {
   e := echo.New()
   fmt.Println("测试数据")
   //定义GET方法
   e.GET("/index", func(c echo.Context) error {
      return c.String(200, "Hello, World!")
   })
   //定义POST方法
   e.POST("/indexs",indexs)
   // 启动服务器
   e.Start(":8080")
}


//定义方法
func indexs(c echo.Context) error {
   id := c.QueryParam("id")
   return c.String(200, id)
}

6.定义资源路径:

        在页面或者引入资源包的时候需要定义一个资源文件夹,里面存放JS,CSS,图片等一系列的静态资源,那么我们引用的时候需要使用相对路径或者绝对路径,那么我们就需要定义一个路径,来实现引用静态资源:比如  static 目录下的任何文件都会被访问。例如,一个访问 /static/js/main.js 的请求会匹配到 static/js/main.js 这个文件

e.Static("/static", "static")

7.数据绑定:Gin框架中我们介绍过了ShouldBind绑定,在Echo框架中就不能使用了,应该使用Bind来绑定数据到结构体:

//定义结构体 (注意:form 和 query 的值与url里面的值一定保持一致,否则接受不到参数)
type User struct {
    Name  string `json:"name" xml:"name" form:"name" query:"name"`
    Sex  string `json:"sex" xml:"sex" form:"sex" query:"sex"`
    Age int `json:"age" xml:"age" form:"age" query:"age"`
}

//数据绑定
e.GET("/users:name:age", func(c echo.Context) error {
    u := new(User)
    c.Bind(u)
    return c.JSON(200, u)
})

启动服务:go run main.go

访问地址:http://localhost:8080/users?name=测试姓名&sex=女&age=28

结果:

8.设置Cookie:

//设置cookie

func writeCookie(c echo.Context) error {
    cookie := new(http.Cookie) //初始化对象
    cookie.Name = "mykey"   //设置key
    cookie.Value = "jay"       //设置value
    cookie.Expires = time.Now().Add(24 * time.Hour) //设置过期时间
    c.SetCookie(cookie)
    return c.String(http.StatusOK, "write a cookie")
}


//获取cookie
func readCookie(c echo.Context) error {
    cookie, err := c.Cookie("mykey")
    if err != nil {
        return err
    }
    return c.String(http.StatusOK, "read a cookie")
}

9.模板渲染:与前面的Gin框架和Beego框架不同,没有现成的方法,  所以需要自己定义

1.实现 echo.Renderer 接口
2.注册模版引擎
3.在控制器中渲染模版并返回 HTML 页面

//渲染函数定义
// 第一参数用于保存渲染模版后的结果
// 第二个参数是模版名字
// 第三个参数是传入模版的参数,可以是任意类型
// 第四个参数是echo.Context
Renderer interface {
    Render(io.Writer, string, interface{}, Context) error
} 

import (
    "html/template"
    "io"
    "log"
    "net/http"
    "github.com/labstack/echo"
)


//自定义的模版引擎 struct
type TemplateRenderer struct {
    templates *template.Template
}

// 实现接口,Render函数
func (t *TemplateRenderer) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
    if viewContext, isMap := data.(map[string]interface{}); isMap {
        viewContext["reverse"] = c.Echo().Reverse
    }
    return t.templates.ExecuteTemplate(w, name, data)
}

//主函数
func main() {
  e := echo.New()
  renderer := &TemplateRenderer{
      templates: template.Must(template.ParseGlob("*.html")),
  }
  e.Renderer = renderer

  e.GET("/user", func(c echo.Context) error {
      return c.Render(http.StatusOK, "user.html", map[string]interface{}{
          "name": "测试yonghu",
      })
  }).Name = "foobar"//路由重命名
    
  log.Fatal(e.Start(":8000"))
}

Golang Echo框架依赖注入实践:打造可测试代码 本文旨在帮助Golang开发者理解依赖注入的核心概念,并掌握在Echo框架中实现依赖注入的具体方法。我们将重点关注如何通过依赖注入提高代码的可测试性,同时保持代码的简洁和高效。介绍依赖注入的核心概念分析Echo框架的基本结构展示依赖注入的实现方法提供完整的代码示例讨论单元测试的最佳实践探索高级应用场景依赖注入(Dependency Injection): 一种设计模式,将对象的依赖关系从内部创建改为外部传入控制反转(IoC): 程序控制权从应用程序代码转移到框架或容器接口隔离。 阅读详情

相关推荐

Go web框架|Beego、Gin、Echo、Iris等干货教程

等等,

weixin_43507410的博客 2350

go语言web框架:Echo超详细一文搞透

官方网站: GitHub资源库: 文档: 社区论坛: 二、基本使用 1、基本语法 创建server.go 执行:,端口8080 3、响应处理 指定响应内容

秃了也弱了 2326

Go语言的Web开发入门:构建高效Web服务

Go语言(Golang)是一种面向并发、编译型的编程语言,凭借其快速、高效的特性,已成为开发高性能Web应用的理想选择。本文将带你入门Go语言的Web开发,介绍主要的Web框架,并通过一个实际的API项目展示如何构建一个简单的Web应用。

weixin_52088134的博客 1315

Go 语言 Web 开发利器:Echo 框架详解

在 Go 语言的丰富生态系统中,有许多出色的 Web 框架,而 Echo 是其中备受瞩目的一员。它以高性能、简洁易用而著称。本博客将详细介绍如何使用 Echo 框架进行 Web 开发,包括安装、路由、中间件、模板引擎等方面。

m0_62153576的博客 2384

第 28 章 - Go语言 Web 开发入门

Gin:一个性能非常高的HTTP web框架,基于MVC设计模式。它以简洁、快速著称,非常适合构建API服务。Echo:另一个高性能的Go Web框架,提供了丰富的特性支持,如中间件、路由、错误处理等,适合快速开发。选择合适的Web框架对于项目成功至关重要,通常需要考虑的因素包括性能需求、功能丰富度、社区活跃度和支持情况等。通过上述两个案例,我们展示了如何使用Gin和Echo框架来构建不同类型的Web应用。Gin适用于构建高性能的API服务,而Echo则在提供静态文件服务方面表现出色。

m0_74824802的博客 1119

Echo框架深度解析:为什么它是Golang Web开发的首选?

随着Golang在云计算、微服务领域的普及,Web开发需求激增。市场上虽有Gin、Beego等框架,但Echo凭借“轻量+高性能+灵活”的特性突出重围。本文将覆盖Echo的核心设计思想、关键组件(路由、中间件、处理函数)、底层优化原理,以及如何用Echo快速构建生产级Web应用。本文将按照“故事引入→核心概念→原理拆解→实战演练→场景应用”的逻辑展开。前半部分用生活化案例降低理解门槛,后半部分通过代码和架构图揭示技术细节,最后结合实际场景总结Echo的优势。路由(Router):决定HTTP请求(如。

AI Agent Harness Engineering 915

【全栈开发新星】Go/Echo搭配Templ:打造高效SQLite待办列表应用

【全栈开发新星】Go/Echo搭配Templ:打造高效SQLite待办列表应用 在现代Web应用的舞台上,我们不时会遇到那些能够简化开发流程并提升用户体验的宝藏项目。今天,让我们一同探索一个基于Go语言的全栈示例应用——Go/Echo+Templ,它不仅展示了Echo框架的强大,还融合了Templ模板引擎的优雅以及HTMX的实时交互体验,为你带来构建待办事项列表应用的新视角。 项目介绍 Go/Ec...

gitblog_00556的博客 545

RAG-Anything 实战指南:从零构建企业级多模态知识库

本文是RAG-Anything的实战指南,详细介绍了如何从零构建企业级多模态知识库。通过一体化框架,它能无差别解析文本、表格、图片、公式等多格式文档,并构建可深度理解和智能检索的知识图谱。指南涵盖了环境搭建、核心实战、智能查询及生产级部署优化,帮助企业将杂乱文档转化为智能知识大脑。

pandas7gardener的博客 243

Go主流框架对比

Gin是我入门Go语言开发使用的第一个框架,强烈安利一下我基于Gin封装的中间件:# 用户角色权限管理中间件和# 操作日志中间件Echo非常适合于开发轻量级的微服务Beego整体来讲是非常优秀的框架,吸引了大批Go语言初学者作为第一框架,适合工业级项目开发IrisIris自称是全宇宙最快的Go语言Web框架,完备MVC支持,拥抱未来Iris为了优化性能,不惜自己开发和集成最快的组件,比如日志记录内置了golog模块,比如json序列化就选择了第三方库jsoniter,从框架设计的态度上,非常给力。

小道士写程序 2111

5G初始注册流程详解(2)-Registration Request

1:了解注册的本质,5G终端为什么要注册? 2:SUCI,SUPI,5G-GUTI的区别? 3:为什么会有COMPLETE REGISTRATION REQUEST呢?

weixin_53220301的博客 3794

建议收藏:模拟版图高频面试题,直通面试,Offer抢先拿!

直击模拟版图面试

nuoweishizi的博客 6337

Gearbox vs Gin vs Echo:5个关键对比帮你选择最佳Go Web框架

选择正确的Go Web框架对于构建高性能微服务至关重要。在众多Go Web框架中,Gearbox、Gin和Echo都是备受开发者青睐的选择。本文将深入对比这三个流行框架,帮助你做出明智的技术决策。 ## 🚀 1. 性能对比:谁才是速度之王? **Gearbox** 是基于fasthttp构建的,相比net/http性能提升高达10倍!它专注于极致性能,特别适合高并发场景。 **Gin**

gitblog_01099的博客 308

【上海大学计算机组成原理实验报告】五、机器语言程序实验

机器语言程序实验//理解计算机执行程序的实际过程//学习编制机器语言简单程序的方法//将R1中的数值左移n次送OUT,其中n是R2中的数值。(指令码从10开始)//完成R3=R0×R1,结果送OUT。(指令码从30开始)//建立“中文汇编指令”需要哪些条件?//上海大学计算机组成原理实验报告

HackerKevon的博客 2188

适合新手小白Go语言web开发的简单开源案例有哪些?

以上项目都各有特色,无论是想专注于学习Web框架的使用,还是希望通过实践项目来加深对Go语言的理解,都能在上述推荐中找到合适的起点。记住,在开始任何项目之前,确保你已经熟悉了Go语言的基本语法和概念,这样会使你的学习过程更加顺畅。此外,积极参与项目的讨论区或社区,也能帮助你解决问题并获取更多的学习资源。对于新手小白来说,Go语言的Web开发入门可以通过一些简单的开源案例来实践和学习。

Java程序员_编程开发学习笔记_网站安全运维教程_渗透技术教程 746

dos攻击 --hping3

dos使用hping3攻击

qq_65880213的博客 2747

Unity中URP下的菲涅尔效果实现(个性化修改)

在上篇文章中,我们实现了 URP 下的菲涅尔基础效果,我们在这篇文章中,对其进行自定义化修改。

楠溪泽岸的博客 2063

go WEB框架

参考:https://www.topgoer.com/gin%E6%A1%86%E6%9E%B6/%E7%AE%80%E4%BB%8B.html。

记录 分享 成就 410

【AUTOSAR-COM】-10.5-APP CAN Frame/PDU“发送周期不准“的影响因素

一个Tx PDU在COM模块中的数据流; Tx APP CAN Frame/PDU"发送周期不准"的影响因素;

「汽车电子助手」的博客 2386

mac安装go

1.安装 brew install go 2.验证 go version 框架 Beego: 一个Go语言下开源的,高性能Web框架 *https://github.com/astaxie/beego *https://beego.me Buffalo: 一个Go语言下快速Web开发框架 *https://github.com/gobuffalo/buffalo *https://gobuffalo.io Echo: 一个高性能,极简的Web框架 *https://...

su717854075的博客 500

《人工智能基础》[工具篇2]:ChatBox怎么使用本地模型和知识库配置教程

通过设置-知识库,添加,填入知识库名称、选用的嵌入模型创建好知识库后,点击添加文件按钮+,可以上传本地文件、拖动文件支持上传PDF、DOCX等格式的文档。系统会自动对文档进行处理。批量上传:一次最多上传 50 个文档,总大小不超过 2GB;格式检测:支持 PDF/DOCX/TXT/Markdown,不支持 EXE/RAR 等二进制文件。‌文档类‌图片类‌代码类‌:Python、Java、JavaScript等编程文件‌其他‌:Markdown(用于导出对话记录) ‌。

专注大数据、云计算、人工智能、机器人领域技术传播 2940

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

go框架gin

Go语言gin框架从入门到精通(1):https://zhuanlan.zhihu.com/p/165633941 Gin框架中文文档:https://www.jianshu.com/p/98965b3ff638 go有哪些快速开发的web框架?:https://www.zhihu.com/question/27370112 Go语言性能测试:https://www.cnblogs.com/d...

cxs812760493的博客 202

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

终极指南:如何将openwechat微信机器人集成到Gin、Echo、Beego三大Web框架

openwechat是一个功能强大的Golang微信SDK,能够让你像开发公众号一样开发个人微信号功能。这个完整的微信机器人集成教程将指导你如何将openwechat与三大主流Web框架完美结合,实现智能化的微信消息处理能力。🚀 ## 🔥 为什么选择openwechat微信机器人? openwechat提供了丰富的微信API功能,包括: - **消息自动回复** - 支持文本、图片、文件

gitblog_00729的博客 424

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Huma框架深度解析:Go语言中构建现代化REST API的完整指南

Huma是一个专为Go语言设计的REST/HTTP API框架,它提供了OpenAPI 3规范支持,帮助开发者快速构建高效、标准化的API服务。本文将深入探讨Huma框架的核心功能、使用方法以及在实际项目中的应用技巧,让你轻松掌握这一强大工具。 ## 为什么选择Huma框架? 在Go语言生态中,构建REST API的框架有很多选择,Huma之所以脱颖而出,主要得益于其独特的优势: - **O

gitblog_00776的博客 972

Echo 框架入门指南及实战解析

Echo 框架入门指南及实战解析 【免费下载链接】echo High performance, minimalist Go web framework 项目地址: https://gitcode.com/gh_mirrors/ec...

gitblog_00336的博客 1054

Golang(go语言)的框架

Golang(go语言)的框架,2020–07–25。

行走的皮卡丘 1万+
上一篇: Python 光速入门课程
下一篇: Python光速入门 - Flask轻量级框架
masterphp
博客等级 码龄5年 247粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值