Files
fred-api/tests/test_fred_api.go
xieyao 96711ffb35 feat: initial FRED API Proxy project
- Go web server using Gin framework
- Proxy FRED economic data API
- Support series, observations, search, releases endpoints
2026-04-01 06:48:29 +00:00

89 lines
2.0 KiB
Go

package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
)
const (
APIKey = "987b9c3428a3d0fe90179e3e6298d05e"
BaseURL = "https://api.stlouisfed.org/fred"
)
func buildURL(endpoint string, params map[string]string) string {
u, _ := url.Parse(BaseURL + endpoint)
query := u.Query()
query.Set("api_key", APIKey)
query.Set("file_type", "json")
for k, v := range params {
if v != "" {
query.Set(k, v)
}
}
u.RawQuery = query.Encode()
return u.String()
}
func fetchAndPrint(endpoint string, params map[string]string) {
url := buildURL(endpoint, params)
fmt.Printf("\n=== Testing %s ===\n", endpoint)
fmt.Printf("URL: %s\n\n", url)
resp, err := http.Get(url)
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
fmt.Printf("Error reading body: %v\n", err)
return
}
var prettyJSON map[string]interface{}
if err := json.Unmarshal(body, &prettyJSON); err == nil {
output, _ := json.MarshalIndent(prettyJSON, "", " ")
fmt.Printf("Response:\n%s\n", output)
} else {
fmt.Printf("Response:\n%s\n", string(body))
}
}
func main() {
fmt.Println("========================================")
fmt.Println(" FRED API 测试脚本")
fmt.Println("========================================")
fetchAndPrint("/series", map[string]string{"series_id": "GNPCA"})
fetchAndPrint("/series/observations", map[string]string{
"series_id": "GNPCA",
"limit": "5",
"observation_end": "2000-01-01",
})
fetchAndPrint("/series/search", map[string]string{
"search_text": "GDP",
"limit": "3",
})
fetchAndPrint("/releases", map[string]string{
"limit": "3",
})
fetchAndPrint("/releases/dates", map[string]string{
"limit": "3",
"start_date": "2026-03-01",
"end_date": "2026-03-31",
})
fmt.Println("\n========================================")
fmt.Println(" 测试完成!")
fmt.Println("========================================")
}