Files
backend/router.go
NanamiAdmin 72eb90957c refactor(api): switch to header-based auth for GET requests
- Replace body parsing with header validation for GET endpoints
- Update router to properly handle GET vs POST requests
- Add new ValidateRequestWithHeader function
- Update README to document header requirements
2026-02-27 23:17:18 +08:00

63 lines
1.5 KiB
Go

package main
import (
"net/http"
"strings"
)
func setupRoutes() {
http.HandleFunc("/register", RegisterHandler)
http.HandleFunc("/login", LoginHandler)
http.HandleFunc("/frpcAct/instanceMgr/create", CreateInstanceHandler)
http.HandleFunc("/frpcAct/instanceMgr/list", ListInstancesHandler)
http.HandleFunc("/frpcAct/instanceMgr/", func(w http.ResponseWriter, r *http.Request) {
path := r.URL.Path
if len(path) < len("/frpcAct/instanceMgr/") {
SendErrorResponse(w, http.StatusNotFound, "invalid path")
return
}
remainingPath := path[len("/frpcAct/instanceMgr/"):]
if r.Method == http.MethodGet {
if remainingPath == "list" {
ListInstancesHandler(w, r)
return
}
instanceName := strings.Trim(remainingPath, "/")
if instanceName != "" {
ListInstancesHandler(w, r)
return
}
}
if r.Method == http.MethodPost {
if remainingPath == "create" {
CreateInstanceHandler(w, r)
return
}
if strings.HasSuffix(remainingPath, "/delete") {
instanceName := strings.TrimSuffix(remainingPath, "/delete")
instanceName = strings.Trim(instanceName, "/")
DeleteInstanceHandler(w, r, instanceName)
return
}
if strings.Contains(remainingPath, "/modify/") {
parts := strings.SplitN(remainingPath, "/modify/", 2)
if len(parts) == 2 {
instanceName := strings.Trim(parts[0], "/")
ModifyInstanceHandler(w, r, instanceName)
return
}
}
}
SendErrorResponse(w, http.StatusNotFound, "endpoint not found")
})
}