fix(access-logs): 修复概览域名筛选参数 hosts[] 被 Gin 忽略

Axios 默认序列化为 hosts[]=,Gin QueryArray("hosts") 读不到导致筛选失效;
后端兼容 hosts/hosts[],前端改为重复键序列化。
This commit is contained in:
ryan
2026-07-19 00:28:37 +08:00
parent 204f6d9a8b
commit bfd9de69af
6 changed files with 119 additions and 1 deletions
@@ -32,7 +32,7 @@ func GetAccessLogOverviewHandler(c *gin.Context) {
result, err := GetAccessLogOverview(c.Request.Context(), AccessLogOverviewQuery{
NodeID: c.Query("node_id"),
Host: c.Query("host"),
Hosts: c.QueryArray("hosts"),
Hosts: readQueryStringArray(c, "hosts"),
Hours: readQueryInt(c, "hours"),
})
if apiutil.AbortBadRequestOnError(c, err) {
@@ -279,3 +279,15 @@ func readQueryInt(c *gin.Context, key string) int {
value, _ := strconv.Atoi(c.DefaultQuery(key, "0"))
return value
}
// readQueryStringArray reads repeated query values for key, and also accepts
// the Axios/jQuery bracket form key[] / key%5B%5D which Gin does not map to key.
func readQueryStringArray(c *gin.Context, key string) []string {
if values := c.QueryArray(key); len(values) > 0 {
return values
}
if values := c.QueryArray(key + "[]"); len(values) > 0 {
return values
}
return nil
}