gin

news/2024/11/29 21:47:01/文章来源:https://www.cnblogs.com/Capooooo/p/18577621

Gin

Gin入门

gin的学习要点

  • 如何定义路由:包括参数路由、通配符路由
  • 如何处理输入输出
  • 如何使用middleware解决AOP问题

image-20241124165732049

  • 在 Gin 里面,用 Engine 来监听一个端口,是一个逻辑上的服务器。
  • 一个 Go 进程可以创建多个 Engine。
  • hello, world 使用步骤:
    • 在应用中引入 Gin 依赖:go get github.com/gin-gonic/gin@latest
    • 初始化一个 Engine
    • 调用 Run 监听端口 8080,并且启动

gin.Engine

  • 在gin里,一个web服务器被抽象成 Engine。
  • 你可以在一个应用里面创建多个 Engine实例,监听不同的端口。
  • Engine 承担了路由注册、接入 middleware 的核心职责。

gin.Context

  • gin.Context 是 gin 里面的核心类型。应该说,你日常最经常的就是和它打交道。
  • 它的字面意思就是“上下文”,在 Gin 里面,它的核心职责是:
    • 处理请求
    • 返回响应
  • 下图中的 Request 代表的就是请求,Writer代表的就是响应。

image-20241124170351891

gin 路由

  • 静态路由:完全匹配的路由,也就是前面我们注册的 hello 的路由。
  • 参数路由:在路径中带上了参数的路由。
  • 通配符路由:任意匹配的路由。

image-20241124170458363

gin面试题

  • 什么是gin的middle?能用来解决什么问题?
  • 什么是跨域问题,怎么解决?
  • 跨域问题需要设置哪些头部?

在gin面试的时候,可以考虑提起自己研发了一个强大的gin插件库

Gorm

  • Gorm是什么?Grom是一个 go 语言的 ORM 框架,性能优秀,简单易用
  • Gorm功能:
    • 支持多种数据库,包括 Mysql、PostgreSql。
    • 支持简单查询,支持事务,也支持关联关系。
    • 支持钩子
    • 支持自动迁移工具。

Gorm快速入门

  • 安装
go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite
  • 快速入门
package mainimport ("gorm.io/gorm""gorm.io/driver/sqlite"
)type Product struct {gorm.ModelCode  stringPrice uint
}func main() {db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})if err != nil {panic("failed to connect database")}// 迁移 schemadb.AutoMigrate(&Product{})// Createdb.Create(&Product{Code: "D42", Price: 100})// Readvar product Productdb.First(&product, 1) // 根据整型主键查找db.First(&product, "code = ?", "D42") // 查找 code 字段值为 D42 的记录// Update - 将 product 的 price 更新为 200db.Model(&product).Update("Price", 200)// Update - 更新多个字段db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // 仅更新非零值字段db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"})// Delete - 删除 productdb.Delete(&product, 1)
}

BCrypt加密

bcrypt 是一个号称最安全的加密算法。

优点:

  • 不需要自己生成盐值
  • 不需要额外存储盐值
  • 可以通过控制 cost 来控制加密的性能
  • 同样的文本,加密的结果不同

bcrypt限制密码长度不能超过72字节

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

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

相关文章

MySQL底层概述—3.InnoDB线程模型

大纲 1.InnoDB的线程模型 2.IO Thread 3.Purge Thread 4.Page Cleaner Thread 5.Master Thread1.InnoDB的线程模型 InnoDB存储引擎是多线程的模型,因此其后台有多个不同的后台线程,负责处理不同的任务。后台线程的作用一:负责刷新内存池中的数据,保证缓冲池中的内存缓存是最…

20222427 2024-2025-1 《网络与系统攻防技术》实验七实验报告

1.实验内容 1.1 本周学习内容本周学习了有关Web安全的相关知识,复习了一些有关于Web的基础知识,比如:前、后端的定义,以及在前后端各自使用的语言,如:html、css、JS(前端);C/C++、Python、Java、Go、Php(后端)等。学习了有关于数据库攻击的一些基本操作,如:SQL注入…

基于Java+SpringBoot+Mysql实现的点卡各种卡寄售平台功能设计与实现四

部分功能:实名认证信息数据层Dao、银行卡类型信息数据层Dao、卡种类信息数据层Dao、卡类型信息数据层Dao、卡面值信息数据层Dao一、前言介绍: 免费学习:猿来入此 1.1 项目摘要 随着电子商务和在线支付技术的快速发展,数字商品和虚拟货币的交易需求日益增长。点卡及各种卡类…

kafka的搭建与使用

官网下载地址https://kafka.apache.org/downloads1、上传解压tar -zxvf kafka_2.11-1.0.0.tgz -C ../ mv kafka_2.11-1.0.0 kafka-1.0.02、修改环境变量 配置环境变量vim /etc/profileexport KAFKA_HOME=/usr/local/soft/kafka-1.0.0 export PATH=$PATH:$KAFKA_HOME/binsource …

河北公需课代 (可以补)

学时30个,需要联系15689397956

技术框架对MyBatis的入门学习

MyBatis快速入门 在回顾JDBC时,我们已经创建有Maven工程,而且在pom.xml中也已经导入 mysql 依赖包,这里就直接在原有工程上搭建MyBatis环境,以及使用MyBatis来实现JDBC查询user的操作流程。 MyBatis环境搭建 首先,在 Maven 项目的 pom.xml 中添加 MyBatis 的依赖 jar 包 &…

基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM

1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)for t=1:Iterstfor i=1:Numif xwoa(i,1)<0xwoa(i,1)=0.1; endif xwoa(i,2)<0xwoa(i,2)=0.001; end%目标函数更新[pa(i)] = f…

安装苹果系统台式电脑如何正确选购装机硬件

结合自己的一些装机经验和网上查阅的相关资料,给大家安利一波 “ 如何正确选配黑苹果硬件 ” 方面的相关知识。文中配置推介表中的配置都是目前在安装黑苹果上比较常见且稳定的机型,并且EFI引导文件都有现成的,在各大资源网站中也比较好找,能帮助你 快速简单的吃上黑苹果。…

JavaWeb知识点总结

JavaWeb知识点总结和学习笔记目录JavaWebjunit黑盒测试白盒测试注解所需jar包反射作用获取Class对象的方式class对象功能应用注解作用预定义的注解自定义注解解析注解动态代理ProxyMaven作用概述仓库maven依赖仓库:IDEA集成Maven高级功能JDBC概念本质快速入门各个对象抽取JDBC工…

电话号码的字母序列

题目描述 输入一个仅包含数字 2-9 的字符串,输出所有它能表示的字母序列。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。输入 输入一个包含数字 2-9 的字符串,长度不超过6。 输出 按字典序输出所有能表示的字母序列,每行输出一个。 输入样例 23输出…

IDEA-idea设置导航栏字体大小代码编辑区字体大小

一、设置导航栏字体大小 Setting - Appearance & Behavior - Appearance - Use custom font二、设置代码编辑区字体大小 Setting - Font - Size