Golang 转生到web世界 - gin Middleware中间件

Golang

Golang gin Middleware中间件

我第一次接触Middleware这个词是在php laravel的时候,Middleware有人翻 中间件也有人翻中介软件,常见的用途之一就是应用在身分验证的功能,我们在特定route设定Middleware,此时的Middleware可以想像是进来之前的检查哨,我们就不需要在一一自己设置,而是在route那边处理。

如果是使用vscode的朋友,此时可以点Default,就会跳去该程序码的function

package main

import (
	"fmt"

	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()
	r.POST("/", func(c *gin.Context) {

		fmt.Println(c.GetPostFormArray("str1"))

	})

	r.Run(":8000")
}

这时候我们会看到Default的function如下

// Default returns an Engine instance with the Logger and Recovery middleware already attached.
func Default() *Engine {
	debugPrintWARNINGDefault()
	engine := New()
	engine.Use(Logger(), Recovery())
	return engine
}

所以我们可以得知,在不知不觉中,其实我们在使用gin.Default()返回时,就已经使用了Recovery和Logger这两个Middleware。

package main

import (
	"fmt"
	"time"

	"github.com/gin-gonic/gin"
)

func LoggerHandler() gin.HandlerFunc {
	return func(c *gin.Context) {
		t := time.Now()
		fmt.Printf("gogo %v \n", t)
	}
}
func main() {
	r := gin.Default()
	r.Use(LoggerHandler())
	//注册一个Middleware

	r.GET("/", func(c *gin.Context) {
		fmt.Println("HELLO")
	})

	r.Run(":8000")
}

这时候可以执行看看http://localhost:8000/
也确实看终端机输出有print了~


<<:  [Day10] - Docker Compose 设定及操作介绍

>>:  Day8 - 布署 GitHub 程序与串接聊天机器人 LINE Messaging API

Day02 何谓Django?

我们都要谈Django了,总不能连他是什麽都不知道吧? 那既然你都诚心诚意地发问了,那我就大发慈悲地...

Day 30 Rails dependent destroy

在 Day 03 的时候有提到笔者在跟同组的同学做一个专案。 笔者的专案是做一个笔记网站,笔记内可以...

Day26 订单 -- 重新付款2

昨天已经有说明为什麽要有重新付款的功能, 以及大致作法,今天要介绍的是另外一种作法的, 两种谁好谁坏...

Day 21 Flask Blueprint

前面说那麽多次以後会遇到大型专案会怎样怎样的,所以现在就要来说一下大型专案长怎样,如何将大型专案拆解...

Day 26 利用transformer自己实作一个翻译程序(八) Multi-head attention

Multi-head attention 在Day 12 Self-attention(六) Mul...