最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go語(yǔ)言beego框架分頁(yè)器操作及接口頻率限制示例

 更新時(shí)間:2022年04月18日 09:43:04   作者:Jeff的技術(shù)棧  
這篇文章主要為大家介紹了go語(yǔ)言beego框架分頁(yè)器操作使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪

獲取所有文章數(shù)據(jù)

o := orm.NewOrm()
qs := o.QueryTable("Article")
12

獲取總條數(shù)

count, _ := qs.Count()
1

設(shè)置每頁(yè)的條數(shù)

pageSetNum := 2
1

總頁(yè)數(shù)和當(dāng)前頁(yè)碼

//	總頁(yè)數(shù)
pageCount := math.Ceil((float64(count) / float64(pageSetNum)))
//	獲取當(dāng)前頁(yè)碼
pageNum, err := this.GetInt("pageNum")
if err != nil {
	pageNum = 1
}
1234567

獲取分頁(yè)數(shù)據(jù)

//存儲(chǔ)分頁(yè)數(shù)據(jù)的切片
articles := new([]models.Article)
//獲取分頁(yè)數(shù)據(jù)
qs.Limit(pageSetNum, pageSetNum*(pageNum - 1)).All(articles)
1234

返回?cái)?shù)據(jù)

beego.Info(*articles)
this.Data["articles"] = *articles
this.Data["count"] = count
this.Data["pageCount"] = pageCount
this.Data["pageNum"] = pageNum
this.TplName = "index.html"

beego接口頻率限制

package utils
import (
	"github.com/astaxie/beego"
	"github.com/astaxie/beego/context"
	"github.com/astaxie/beego/logs"
	"github.com/ulule/limiter"
	"github.com/ulule/limiter/v3"
	"github.com/ulule/limiter/v3/drivers/store/memory"
	"net/http"
	"strings"
)
// RateLimiter this is a struct
type RateLimiter struct {
	Limiter     *limiter.Limiter
	Username    string
	UserType    string
	UserToken   string
	RemainTimes int
	MaxTimes    int
}
func RateLimit(rateLimit *RateLimiter, ctx *context.Context) {
	var (
		limiterCtx limiter.Context
		err        error
		req        = ctx.Request
	)
	opt := limiter.Options{
		IPv4Mask:           limiter.DefaultIPv4Mask,
		IPv6Mask:           limiter.DefaultIPv6Mask,
		TrustForwardHeader: false,
	}
	ip := limiter.GetIP(req, opt)

	if strings.HasPrefix(ctx.Input.URL(), "/") {
		limiterCtx, err = rateLimit.Limiter.Get(req.Context(), ip.String())
	} else {
		logs.Info("The api request is not track ")
	}
	if err != nil {
		ctx.Abort(http.StatusInternalServerError, err.Error())
		return
	}
	if limiterCtx.Reached {
		logs.Debug("Too Many Requests from %s on %s", ip, ctx.Input.URL())
		// refer to https://beego.me/docs/mvc/controller/errors.md for error handling
		ctx.Abort(http.StatusTooManyRequests, "429")
		return
	}
}
func PanicError(e error) {
	if e != nil {
		panic(e)
	}
}
func RunRate() {
	// 限制每秒登錄的請(qǐng)求次數(shù)
	theRateLimit := &RateLimiter{}
	// 100 reqs/second: "100-S" "100-s"
	loginMaxRate := beego.AppConfig.String("total_rule::reqrate")
	loginRate, err := limiter.NewRateFromFormatted(loginMaxRate + "-s")
	PanicError(err)
	theRateLimit.Limiter = limiter.New(memory.NewStore(), loginRate)
	beego.InsertFilter("/*", beego.BeforeRouter, func(ctx *context.Context) {
		RateLimit(theRateLimit, ctx)
	}, true)
}

在main.go 里面調(diào)用方法即可

以上就是go語(yǔ)言beego框架分頁(yè)器操作及接口頻率限制示例的詳細(xì)內(nèi)容,更多關(guān)于go beego框架分頁(yè)器操作接口頻率限制的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang的func參數(shù)及返回值操作

    Golang的func參數(shù)及返回值操作

    這篇文章主要介紹了Golang的func參數(shù)及返回值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05
  • Go語(yǔ)言Zap日志庫(kù)使用教程

    Go語(yǔ)言Zap日志庫(kù)使用教程

    在項(xiàng)目開發(fā)中,經(jīng)常需要把程序運(yùn)行過(guò)程中各種信息記錄下來(lái),有了詳細(xì)的日志有助于問(wèn)題排查和功能優(yōu)化;但如何選擇和使用性能好功能強(qiáng)大的日志庫(kù),這個(gè)就需要我們從多角度考慮
    2023-02-02
  • Go語(yǔ)言基礎(chǔ)學(xué)習(xí)教程

    Go語(yǔ)言基礎(chǔ)學(xué)習(xí)教程

    這篇文章主要介紹了Go語(yǔ)言基礎(chǔ)知識(shí),包括基本語(yǔ)法、語(yǔ)句、數(shù)組等的定義與用法,需要的朋友可以參考下
    2016-07-07
  • 使用Go?http重試請(qǐng)求的示例

    使用Go?http重試請(qǐng)求的示例

    開發(fā)中對(duì)于http請(qǐng)求是經(jīng)常遇到,一般可能網(wǎng)絡(luò)延遲或接口返回超時(shí),這篇文章主要介紹了使用Go?http重試請(qǐng)求的示例,需要的朋友可以參考下
    2022-08-08
  • 深入理解Go語(yǔ)言的容器包

    深入理解Go語(yǔ)言的容器包

    Go語(yǔ)言的container標(biāo)準(zhǔn)包包含了堆(heap)、鏈表(list)和環(huán)(ring)三種數(shù)據(jù)結(jié)構(gòu),本文就來(lái)詳細(xì)的介紹一下這三種的使用,感興趣的可以了解一下
    2024-10-10
  • golang內(nèi)存對(duì)齊的概念及案例詳解

    golang內(nèi)存對(duì)齊的概念及案例詳解

    為保證程序順利高效的運(yùn)行,編譯器會(huì)把各種類型的數(shù)據(jù)安排到合適的地址,并占用合適的長(zhǎng)度,這就是內(nèi)存對(duì)齊。本文重點(diǎn)給大家介紹golang內(nèi)存對(duì)齊的概念及案例詳解,感興趣的朋友一起看看吧
    2022-02-02
  • GO必知必會(huì)的常見面試題匯總

    GO必知必會(huì)的常見面試題匯總

    這篇文章主要為大家介紹了GO必知必會(huì)的常見面試題匯總
    2022-08-08
  • go語(yǔ)言中GOPATH GOROOT的作用和設(shè)置方式

    go語(yǔ)言中GOPATH GOROOT的作用和設(shè)置方式

    這篇文章主要介紹了go語(yǔ)言中GOPATH GOROOT的作用和設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05
  • 使用golang生成prometheus格式數(shù)據(jù)

    使用golang生成prometheus格式數(shù)據(jù)

    Prometheus是一個(gè)開源的監(jiān)控系統(tǒng),擁有許多Advanced?Feature,本文將介紹Primetheus?client的使用,并基于golang生成prometheus格式數(shù)據(jù),希望對(duì)大家有所幫助
    2025-02-02
  • Golang中常用的語(yǔ)法糖分享

    Golang中常用的語(yǔ)法糖分享

    語(yǔ)法糖,也稱糖語(yǔ)法,是由英國(guó)計(jì)算機(jī)科學(xué)家彼得·蘭丁提出的,用于表示編程語(yǔ)言中的某種類型的語(yǔ)法,這些語(yǔ)法不會(huì)影響功能,但使用起來(lái)卻很方便,本文就來(lái)看看Golang中常用的語(yǔ)法糖有哪些吧
    2023-05-05

最新評(píng)論

班戈县| 北京市| 郓城县| 板桥市| 桃源县| 曲阳县| 宁武县| 长岭县| 瑞金市| 子长县| 苏尼特右旗| 黔东| 青川县| 道真| 思茅市| 会宁县| 三穗县| 西安市| 江城| 榆林市| 宁乡县| 马尔康县| 师宗县| 新源县| 陕西省| 宝山区| 盖州市| 绥江县| 日照市| 房山区| 淮滨县| 凤山市| 兰坪| 新建县| 抚松县| 万州区| 茶陵县| 左贡县| 贵港市| 红河县| 特克斯县|