欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

獲取總條數(shù)

count, _ := qs.Count()
1

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

pageSetNum := 2
1

總頁數(shù)和當前頁碼

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

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

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

返回數(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() {
	// 限制每秒登錄的請求次數(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語言beego框架分頁器操作及接口頻率限制示例的詳細內(nèi)容,更多關(guān)于go beego框架分頁器操作接口頻率限制的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • go slice不同初始化方式性能及數(shù)組比較詳解

    go slice不同初始化方式性能及數(shù)組比較詳解

    這篇文章主要為大家介紹了go slice不同初始化方式性能及數(shù)組比較示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Golang 模塊引入及表格讀寫業(yè)務快速實現(xiàn)示例

    Golang 模塊引入及表格讀寫業(yè)務快速實現(xiàn)示例

    這篇文章主要為大家介紹了Golang模塊引入及表格讀寫業(yè)務的快速實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • go-micro微服務JWT跨域認證問題

    go-micro微服務JWT跨域認證問題

    JWT 以 JSON 對象的形式安全傳遞信息。因為存在數(shù)字簽名,因此所傳遞的信息是安全的,這篇文章主要介紹了go-micro微服務JWT跨域認證,需要的朋友可以參考下
    2023-01-01
  • Go源碼字符串規(guī)范檢查lint工具strchecker使用詳解

    Go源碼字符串規(guī)范檢查lint工具strchecker使用詳解

    這篇文章主要為大家介紹了Go源碼字符串規(guī)范檢查lint工具strchecker使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Go語言接口的用法詳解

    Go語言接口的用法詳解

    本文詳細講解了Go語言接口的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • go并發(fā)實現(xiàn)素數(shù)篩的代碼

    go并發(fā)實現(xiàn)素數(shù)篩的代碼

    這篇文章主要介紹了go并發(fā)實現(xiàn)素數(shù)篩的代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Go語言實現(xiàn)的最簡單數(shù)獨解法

    Go語言實現(xiàn)的最簡單數(shù)獨解法

    前面給大家介紹過使用javascript實現(xiàn)的簡單的數(shù)獨解法,小伙伴們都非常喜歡,今天我們再來分享一則go語言實現(xiàn)的簡單的數(shù)獨解法,有需要的小伙伴來參考下。
    2015-03-03
  • Go?gRPC教程實現(xiàn)Simple?RPC

    Go?gRPC教程實現(xiàn)Simple?RPC

    這篇文章主要為大家介紹了Go?gRPC教程實現(xiàn)Simple?RPC示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Go語言深度拷貝工具deepcopy的使用教程

    Go語言深度拷貝工具deepcopy的使用教程

    今天給大家推薦的工具是deepcopy,一個可以對指針、接口、切片、結(jié)構(gòu)體、Map都能進行深拷貝的工具,感興趣的小伙伴快跟隨小編一起學習學習
    2022-09-09
  • 如何在Go中使用切片容量和長度

    如何在Go中使用切片容量和長度

    這篇文章主要介紹了如何在Go中使用切片容量和長度,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11

最新評論