在echo框架中中介軟體(middleware)指的是可以攔截http請求-響應生命週期的特殊函式,在請求-響應生命週期中可以註冊多個中介軟體,每個中介軟體執行不同的功能,乙個中間執行完再輪到下乙個中介軟體執行。
中介軟體是乙個函式,嵌入在http 的請求和響應之間。它可以獲得echo#context
物件用來進行一些特殊的操作, 比如記錄每個請求或者統計請求數。
action的處理在所有的中介軟體執行完成之後。
更多中介軟體參考官方文件golang echo:
中介軟體的常見應用場景如下:
root level (before router)
echo#pre()
用於註冊乙個在路由執行之前執行的中介軟體,可以用來修改請求的一些屬性。比如在請求路徑結尾新增或者刪除乙個』/『來使之能與路由匹配。
下面的這幾個內建中介軟體應該被註冊在這一級別:
注意: 由於在這個級別路由還沒有執行,所以這個級別的中介軟體不能呼叫任何echo.context
的 api。
root level (after router)
大部分時間你將用到echo#use()
在這個級別註冊中介軟體。 這個級別的中介軟體執行在路由處理完請求之後,可以呼叫所有的echo.context
api。
下面介紹echo自帶的中介軟體
https 重定向
https 重定向中介軟體將 http 請求重定向到 https。例如, 將被重定向到
用法
e := echo.new()
e.pre(middleware.httpsredirect())
https www 重定向
https www 重定向將 http 請求重定向到帶 www 的 https 請求。例如, 將被重定向到
用法
e := echo.new()
e.pre(middleware.httpswwwredirect())
https nonwww 重定向
https nonwww 將 http 請求重定向到不帶 www 的 https 請求。例如, 將被重定向到
用法
e := echo.new()
e.pre(middleware.httpsnonwwwredirect())
www 重定向將不帶 www 的請求重定向到帶 www 的請求。
例如, 重定向到
用法
e := echo.new()
e.pre(middleware.wwwredirect())
nonwww 重定向將帶 www 的請求重定向到不帶 www 的請求。
例如, 重定向到
用法
e := echo.new()
e.pre(middleware.nonwwwredirect())
recover中介軟體,主要用於攔截panic錯誤並且在控制台列印錯誤日誌,避免echo程式直接崩潰。
使用例子:
//初始化echo例項
e := echo.new()
//註冊中介軟體
e.use(middleware.recover())
static中介軟體主要用於處理js、css之類的靜態資源, 具體用法請參考: 處理靜態檔案。
logger中介軟體主要用於列印http請求日誌。
//初始化echo例項
e := echo.new()
//註冊中介軟體
e.use(middleware.logger())
開啟logger中介軟體後,訪問http請求會列印出日誌:
url重定向中間,可以用於將乙個url重定向到另外乙個url。
例子:
//初始化echo例項
e := echo.new()
e.pre(middleware.rewrite(map[string]string))
/api/*代表任意字串,$1 代表引用表示式中第乙個*的匹配值, $2代表第二個,以此類推。
下面以乙個簡單的統計訪問量的例子介紹如何自定義中介軟體。
)//記錄訪問量
var totalrequests = 0
//中介軟體函式
func count(next echo.handlerfunc) echo.handlerfunc
}func main() )
e.logger.fatal(e.start(":1323"))
}用法
e := echo.new()
e.use(middleware.httpsredirectwithconfig(middleware.redirectconfig))
上面的示例將 http 的請求重定向到 https,使用307 - statustemporaryredirect
狀態碼跳轉。
redirectconfig struct
預設配置
defaultredirectconfig = redirectconfig
中介軟體 訊息中介軟體學習總結
冪等 在程式設計中.乙個冪等操作的特點是其任意多次執行所產生的影響均與一次執行的影響相同。冪等函式,或冪等方法,是指可以使用相同引數重複執行,並能獲得相同結果的函式。這些函式 不會影響系統狀態,也不用擔心重複執行會對系統造成改變。例如,getusername 和settrue 函式就是乙個冪等函式....
中介軟體作業
主要檔案的 fctrl client linux.c this is sample code generated by rpcgen.these are only templates and you can use them as a guideline for developing your ow...
ASTA中介軟體
幾年前我用mts的時候就聽說asta了,後來我們公司也搞與midas和asta類似的中介軟體tm bso,現在mts昇華到com 我們的tm由於穩定性和效率不夠也夭折了,最近乙個朋友在一家大型物流軟體公司做開發,說還在使用asta,去asta 看看,還活得很健壯,支援delphi2006 soap,...