Go语言 Web框架Gin
Go 语言 Web 框架 Gin
返回各种值
返回字符串
|
|
返回 json
|
|

返回 map
|
|

返回原始 json
|
|

返回 html 并传递参数
|
|
|
|

静态文件配置
router.Static和router.StaticFS都是用于处理静态文件的 Gin 框架路由处理方法,但它们有一些区别。
-
router.Static:- 使用
router.Static时,Gin 会简单地将请求的 URL 路径与提供的本地文件系统路径进行映射。通常,这适用于将 URL 路径直接映射到一个静态文件或目录。 - 示例:
router.Static("/static", "./static")将/static映射到当前工作目录下的./static文件夹。
- 使用
-
router.StaticFS:router.StaticFS则允许你使用http.FileSystem对象,这可以提供更多的灵活性。你可以使用http.Dir创建http.FileSystem,并将其传递给router.StaticFS。- 这允许你更灵活地处理静态文件,例如从不同的源(内存、数据库等)加载静态文件,而不仅限于本地文件系统。
- 示例:
router.StaticFS("/static", http.Dir("/path/to/static/files"))使用本地文件系统路径创建一个http.FileSystem对象,然后将/static映射到这个文件系统。
总体而言,router.Static更简单,适用于基本的静态文件服务,而router.StaticFS提供了更多的灵活性,允许你自定义静态文件的加载方式。选择使用哪一个取决于你的具体需求。
|
|

|
|

重定向
|
|

301 和 302 的区别
HTTP 状态码中的 301 和 302 分别表示重定向(Redirect)。它们之间的主要区别在于重定向的性质和原因:
-
301 Moved Permanently(永久重定向):
- 当服务器返回状态码 301 时,它告诉客户端请求的资源已经被永久移动到新的位置。
- 客户端收到 301 响应后,应该更新书签、链接等,将这个新的位置作为将来所有对该资源的请求的目标。
- 搜索引擎在遇到 301 时,通常会更新索引,将原始 URL 替换为新的 URL。
-
302 Found(临时重定向):
- 当服务器返回状态码 302 时,它表示请求的资源暂时被移动到了另一个位置。
- 客户端收到 302 响应后,可以在不更新书签和链接的情况下继续使用原始 URL。
- 搜索引擎在遇到 302 时,通常会保留原始 URL 在索引中,并不会立即更新为新的 URL。
总体来说,使用 301 通常是在确定资源永久移动的情况下,而 302 通常用于暂时性的重定向,即资源可能在将来回到原始位置。选择使用哪种状态码取决于你希望客户端和搜索引擎如何处理被重定向的资源。
路由
默认路由
当访问路径不被匹配的时候返回默认路由内容
目录结构

|
|
|
|
|
|
效果


路由组
参考:https://www.liwenzhou.com/posts/Go/gin/#c-0-7-2
我们可以将拥有共同 URL 前缀的路由划分为一个路由组。习惯性一对{}包裹同组的路由,这只是为了看着清晰,你用不用{}包裹功能上没什么区别。

|
|
|
|
|
|
|
|


路由组也是支持嵌套的
参数
查询参数
|
|

|
|
请求为: http://127.0.0.1:8080/?user=good&id=1&id=2&id=3&id[good]=meowrain >
>
动态参数
|
|

表单参数 PostForm
|
|
|
|

postFormArray 函数
|
|

原始参数
|
|


解析 json 数据
|
|


四大请求方式

简单实现以下 CRUD
|
|
文件上传
上传单个文件
|
|
|
|
|
|


上传多个文件
|
|
|
|
|
|



判断上传文件的类型
在 Gin 框架中,可以使用binding模块提供的FormFile函数来获取上传的文件,然后检查文件的 MIME 类型。具体步骤如下:
- 在处理函数中使用
c.FormFile获取上传的文件:
|
|
- 打开文件并读取文件头部的几个字节,以识别文件的 MIME 类型:
|
|
- 使用
http.DetectContentType函数检测文件的 MIME 类型:
|
|
- 判断文件类型是否允许:
|
|
完整的示例代码如下:
|
|
在上面的示例中,我们定义了一个允许的 MIME 类型列表allowedTypes,包括image/jpeg、image/png和application/pdf。如果上传的文件类型不在允许列表中,就会返回错误响应。你可以根据需求修改允许的文件类型列表。
使用 gin 编写文件服务器
|
|
|
|
|
|
|
|



请求头相关
获取所有请求头

|
|
|
|
绑定参数 bind
绑定 post 发送的 json 数据转换为 Student 结构体的成员变量值,然后再把这个结构体转换为 json 对象
|
|

绑定查询参数
|
|

bind URI
|
|

常用验证器
|
|
|
|
密码相同
密码不同
我们看到报错对用户不是很友好,我们可以自定义验证的错误信息
TODO
gin 内置验证器
|
|
Gin 中间件
Gin 中的中间件必须是一个gin.HandlerFunc类型。
Gin 框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等。
记录接口耗时的中间件
|
|

> 

