mirror of
https://github.com/woodchen-ink/random-api-go.git
synced 2025-07-18 05:42:01 +08:00
feat(main, handlers): initialize random number generator and enhance URL stats response format
- Added initialization of a random number generator in main.go to support future features. - Refactored HandleURLStats in handlers.go to return URL statistics in a structured format, improving API response clarity and usability.
This commit is contained in:
parent
1b2fd3ea85
commit
fd9c616aa2
@ -144,12 +144,25 @@ func (h *Handlers) HandleStats(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
func (h *Handlers) HandleURLStats(w http.ResponseWriter, r *http.Request) {
|
func (h *Handlers) HandleURLStats(w http.ResponseWriter, r *http.Request) {
|
||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
services.Mu.RLock()
|
stats := services.GetURLCounts()
|
||||||
response := map[string]interface{}{
|
|
||||||
"paths": services.CSVPathsCache,
|
// 转换为前端期望的格式
|
||||||
|
response := make(map[string]struct {
|
||||||
|
TotalURLs int `json:"total_urls"`
|
||||||
|
})
|
||||||
|
|
||||||
|
for endpoint, stat := range stats {
|
||||||
|
response[endpoint] = struct {
|
||||||
|
TotalURLs int `json:"total_urls"`
|
||||||
|
}{
|
||||||
|
TotalURLs: stat.TotalURLs,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := json.NewEncoder(w).Encode(response); err != nil {
|
||||||
|
http.Error(w, "Error encoding response", http.StatusInternalServerError)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
services.Mu.RUnlock()
|
|
||||||
json.NewEncoder(w).Encode(response)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Handlers) HandleMetrics(w http.ResponseWriter, r *http.Request) {
|
func (h *Handlers) HandleMetrics(w http.ResponseWriter, r *http.Request) {
|
||||||
|
5
main.go
5
main.go
@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
"math/rand"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
@ -35,6 +36,10 @@ func (a *App) Initialize() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 初始化随机数生成器
|
||||||
|
source := rand.NewSource(time.Now().UnixNano())
|
||||||
|
config.InitRNG(rand.New(source))
|
||||||
|
|
||||||
// 然后创建必要的目录
|
// 然后创建必要的目录
|
||||||
if err := os.MkdirAll(config.Get().Storage.DataDir, 0755); err != nil {
|
if err := os.MkdirAll(config.Get().Storage.DataDir, 0755); err != nil {
|
||||||
return fmt.Errorf("failed to create data directory: %w", err)
|
return fmt.Errorf("failed to create data directory: %w", err)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user