日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GoFrame教程:GoFrame高級特性-自定義狀態(tài)碼處理

我們可以對?WebServer?指定的狀態(tài)碼進(jìn)行自定義處理,例如針對常見的?404/403/500?等錯誤,我們可以展示自定義的錯誤信息、頁面內(nèi)容,或者跳轉(zhuǎn)到一個特定的頁面。

專業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來客戶和效益!創(chuàng)新互聯(lián)為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作負(fù)責(zé)任的成都網(wǎng)站制作公司!

相關(guān)方法如下:

func (s *Server) BindStatusHandler(status int, handler HandlerFunc)
func (s *Server) BindStatusHandlerByMap(handlerMap map[int]HandlerFunc)

func (d *Domain) BindStatusHandler(status int, handler HandlerFunc)
func (d *Domain) BindStatusHandlerByMap(handlerMap map[int]HandlerFunc)

可以看到,我們可以使用?BindStatusHandler?或者?BindStatusHandlerMap?來實(shí)現(xiàn)針對指定的狀態(tài)碼進(jìn)行自定義的回調(diào)函數(shù)處理,并且該特性也支持針對特定的域名綁定。我們來看幾個簡單的示例。

基本使用

package main

import (
    "github.com/GOgf/gf/v2/frame/g"
    "github.com/gogf/gf/v2/net/ghttp"
)

func main() {
    s := g.Server()
    s.BindHandler("/", func(r *ghttp.Request){
        r.Response.Writeln("halo 世界!")
    })
    s.BindStatusHandler(404, func(r *ghttp.Request){
        r.Response.Writeln("This is customized 404 page")
    })
    s.SetPort(8199)
    s.Run()
}

執(zhí)行后,我們訪問沒有綁定的路由頁面,例如 http://127.0.0.1:8199/test ,可以看到,頁面顯示了我們期望的返回結(jié)果:?This is customized 404 page?。

此外,常見的Web頁面請求錯誤狀態(tài)碼處理方式,是引導(dǎo)用戶跳轉(zhuǎn)到指定的錯誤頁面,因此,在狀態(tài)碼回調(diào)處理函數(shù)中,我們可以使用?r.RedirectTo?方法來進(jìn)行頁面跳轉(zhuǎn),示例如下:

package main

import (
    "github.com/gogf/gf/v2/frame/g"
    "github.com/gogf/gf/v2/net/ghttp"
)

func main() {
    s := g.Server()
    s.BindHandler("/status/:status", func(r *ghttp.Request) {
        r.Response.Write("woops, status ", r.Get("status"), " found")
    })
    s.BindStatusHandler(404, func(r *ghttp.Request){
        r.Response.RedirectTo("/status/404")
    })
    s.SetPort(8199)
    s.Run()
}

執(zhí)行后,我們手動通過瀏覽器訪問一個不存在的頁面,例如 http://127.0.0.1:8199/test ,可以看到,頁面被引導(dǎo)跳轉(zhuǎn)到了 http://127.0.0.1:8199/status/404 頁面,并且可以看到頁面返回內(nèi)容:?woops, status 404 found?

批量設(shè)置

package main

import (
    "github.com/gogf/gf/v2/frame/g"
    "github.com/gogf/gf/v2/net/ghttp"
)

func main() {
    s := g.Server()
    s.BindStatusHandlerByMap(map[int]ghttp.HandlerFunc {
        403 : func(r *ghttp.Request){r.Response.Writeln("403")},
        404 : func(r *ghttp.Request){r.Response.Writeln("404")},
        500 : func(r *ghttp.Request){r.Response.Writeln("500")},
    })
    s.SetPort(8199)
    s.Run()
}

可以看到,我們可以通過?BindStatusHandlerByMap?方法對需要自定義的狀態(tài)碼進(jìn)行批量設(shè)置。該示例程序執(zhí)行后,當(dāng)服務(wù)接口返回的狀態(tài)碼為?403/404/500?時,接口將會返回對應(yīng)的狀態(tài)碼數(shù)字。

注意事項(xiàng)

在自定義狀態(tài)碼處理方法中如果涉及到內(nèi)容的輸出,往往需要使用?r.Response.ClearBuffer()?方法將原本緩沖區(qū)的輸出內(nèi)容清空。


當(dāng)前標(biāo)題:創(chuàng)新互聯(lián)GoFrame教程:GoFrame高級特性-自定義狀態(tài)碼處理
當(dāng)前地址:http://m.5511xx.com/article/dpdigis.html