框架template初识

2024-09-08 07:04
文章标签 初识 框架 template

本文主要是介绍框架template初识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

框架初识

框架就是一个别人帮我们搭好的舞台,造好了很多现成的工具供我们使用,让开发过程更快速、简洁。

Gin框架介绍

Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。
Gin是一个用Go语言编写的web框架。它是一个类似于martini 但拥有更好性能的API框架, 由于使用了 httprouter,速度提高了近40倍。

第一个Gin示例

package mainimport "github.com/gin-gonic/gin"func sayHello(c *gin.Context) {c.JSON(200, gin.H{"message": "Hello golang!",})
}func main() {// 创建一个默认的路由引擎r := gin.Default()// GET:请求方式;/hello:请求的路径// 指定客户端以GET方法请求访问/hello路径时,会执行后面的sayHello函数r.GET("/hello", sayHello)// 启动HTTP服务,默认在0.0.0.0:8080启动服务r.Run(":9090")
}

将上面的代码保存并编译执行,使用浏览器打开127.0.0.1:8080/hello 就能看到一串JSON字符串:
在这里插入图片描述

RESTful API

REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”或“表现层状态转化”。

REST的含义

REST的含义就是客户端与Web服务器之间进行交互的时候,使用HTTP协议中的4个请求方法代表不同的动作

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

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

【案例】图书管理系统

对一本书进行查询、创建、更新和删除等操作:
在这里插入图片描述
同样的需求按照RESTful API设计如下:
在这里插入图片描述
Gin框架支持开发RESTful API的开发:

func main() {r := gin.Default()// http.StatusOK == 200r.GET("/book", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "GET",})})r.POST("/book", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "POST",})})r.PUT("/book", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "PUT",})})r.DELETE("/book", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "DELETE",})})// 启动服务r.Run(":9090")
}

开发RESTful API的时候我们通常使用 Postman 来作为客户端的测试工具。
在这里插入图片描述

Go语言标准库之http/template

html/template包实现了数据驱动的模板,用于生成可防止代码注入的安全的HTML内容。它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用html/template这个包。

模板与渲染

在一些前后端不分离的Web架构中,通常需要在后端将一些数据渲染到HTML文档中,从而实现动态的网页(网页的布局和样式大致一样,但展示的内容并不一样)效果。

  • 模板:事先定义好的HTML文档文件。
  • 模板渲染的作用机制:文本替换操作 - 使用相应的数据去替换HTML文档中事先准备好的标记。

Go语言的模板引擎

Go语言内置了文本模板引擎 text/template和用于HTML文档的html/template

模板引擎的作用机制

  1. 模板文件通常定义为 .tmpl.tpl 为后缀(也可以使用其他的后缀),必须使用UTF8编码。
  2. 模板文件中使用{{和}}包裹和标识需要传入的数据。
  3. 传给模板这样的数据就可以通过点号.来访问,如果数据是复杂类型的数据,可以通过{ { .FieldName }}来访问它的字段。
  4. {{}}包裹的内容外,其他内容均不做修改原样输出。

模板引擎的使用

定义模板文件

定义模板文件时需要按照相关语法规则去编写。

解析模板文件

上面定义好了模板文件之后,可以使用下面的常用方法去解析模板文件,得到模板对象:

// 解析模板字符串
func (t *Template) Parse(src string) (*Template, error)
// 解析模板文件
func ParseFiles(filenames ...string) (*Template, error)
// 解析很多个模板
func ParseGlob(pattern string) (*Template, error)

当然,也可以使用 func New(name string) *Template 函数创建一个名为name的模板,然后对其调用上面的方法去解析模板字符串或模板文件。

模板渲染

渲染模板简单来说就是使用数据去填充模板,当然实际上可能会复杂很多。

func (t *Template) Execute(wr io.Writer, data interface{}) error
func (t *Template) ExecuteTemplate(wr io.Writer, name string, data interface{}) error

基本示例

定义模板文件

按照Go模板语法定义一个hello.tmpl的模板文件,内容如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head><title>Hello</title>
</head>
<body>
<p>Hello {{ . }}</p>
</body>
</html>

解析和渲染模板文件

创建一个main.go文件,在其中写下HTTP server端代码如下:

package mainimport ("fmt""html/template""net/http"
)func sayHello(w http.ResponseWriter, r *http.Request) {// 2. 解析模板t, err := template.ParseFiles("./hello.tmpl")if err != nil {fmt.Printf("Parse template failed, err:%v\n", err)return}// 3. 渲染模板name := "小王子"err = t.Execute(w, name)if err != nil {fmt.Printf("render template failed, err:%v\n", err)return}
}func main() {http.HandleFunc("/", sayHello)err := http.ListenAndServe(":9000", nil)if err != nil {fmt.Printf("HTTP server start failed, err:%v\n", err)return}

效果

将上面的main.go文件编译执行,然后使用浏览器访问 http://127.0.0.1:9000/:

在这里插入图片描述

这篇关于框架template初识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147452

相关文章

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

解决jupyterLab打开后出现Config option `template_path`not recognized by `ExporterCollapsibleHeadings`问题

《解决jupyterLab打开后出现Configoption`template_path`notrecognizedby`ExporterCollapsibleHeadings`问题》在Ju... 目录jupyterLab打开后出现“templandroidate_path”相关问题这是 tensorflo

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核