frist
This commit is contained in:
53
internal/api/router.go
Normal file
53
internal/api/router.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"proxyrotator/internal/config"
|
||||
"proxyrotator/internal/importer"
|
||||
"proxyrotator/internal/selector"
|
||||
"proxyrotator/internal/store"
|
||||
"proxyrotator/internal/tester"
|
||||
)
|
||||
|
||||
// NewRouter 创建 HTTP 路由
|
||||
func NewRouter(
|
||||
store store.ProxyStore,
|
||||
importer *importer.Importer,
|
||||
tester *tester.HTTPTester,
|
||||
selector *selector.Selector,
|
||||
cfg *config.Config,
|
||||
) http.Handler {
|
||||
handlers := NewHandlers(store, importer, tester, selector, cfg)
|
||||
|
||||
mux := http.NewServeMux()
|
||||
|
||||
// 注册路由(Go 1.22+ 支持 METHOD /path 模式)
|
||||
mux.HandleFunc("POST /v1/proxies/import/text", handlers.HandleImportText)
|
||||
mux.HandleFunc("POST /v1/proxies/import/file", handlers.HandleImportFile)
|
||||
mux.HandleFunc("POST /v1/proxies/test", handlers.HandleTest)
|
||||
mux.HandleFunc("GET /v1/proxies/next", handlers.HandleNext)
|
||||
mux.HandleFunc("POST /v1/proxies/report", handlers.HandleReport)
|
||||
|
||||
// CRUD 路由(注意:/stats 需在 /{id} 之前注册)
|
||||
mux.HandleFunc("GET /v1/proxies/stats", handlers.HandleGetStats)
|
||||
mux.HandleFunc("GET /v1/proxies", handlers.HandleListProxies)
|
||||
mux.HandleFunc("GET /v1/proxies/{id}", handlers.HandleGetProxy)
|
||||
mux.HandleFunc("DELETE /v1/proxies/{id}", handlers.HandleDeleteProxy)
|
||||
mux.HandleFunc("DELETE /v1/proxies", handlers.HandleBulkDeleteProxies)
|
||||
mux.HandleFunc("PATCH /v1/proxies/{id}", handlers.HandleUpdateProxy)
|
||||
mux.HandleFunc("POST /v1/proxies/{id}/test", handlers.HandleTestSingleProxy)
|
||||
|
||||
// 健康检查
|
||||
mux.HandleFunc("GET /health", func(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(http.StatusOK)
|
||||
w.Write([]byte(`{"status":"ok"}`))
|
||||
})
|
||||
|
||||
// 应用中间件
|
||||
var handler http.Handler = mux
|
||||
handler = AuthMiddleware(handler, cfg.APIKey)
|
||||
handler = LoggingMiddleware(handler)
|
||||
|
||||
return handler
|
||||
}
|
||||
Reference in New Issue
Block a user