Как вызвать функцию по умолчанию, если URL API не существует в Go? - PullRequest
0 голосов
/ 27 марта 2020

Я использую Go с Gorilla Mux для разработки API, и я разбил код на «маршруты», «обработчики» и другие файлы. У меня есть определенные предопределенные пути API, определенные в файле «маршрутов», чьи функции-обработчики были записаны в файле «обработчиков». Тем не менее, я хочу написать своего рода функцию по умолчанию, которая вызывается каждый раз, когда я вызываю путь, который не был предопределен .ie независимо от шаблона / пути. Может кто-нибудь подсказать, как добиться того же с нижеприведенной структурой?

маршруты. go:

type Route struct {
    Name        string
    Method      string
    Pattern     string
    HandlerFunc http.HandlerFunc
}

type Routes []Route

type App struct {
    Router   *mux.Router
    Database *sql.DB
}

var Appl App

func NewRouter() {
    var patterns []string
    Appl.Router = mux.NewRouter()
    for _, route := range routes {
        Appl.Router.
            Methods(route.Method).
            Path(route.Pattern).
            Name(route.Name).
            Handler(route.HandlerFunc)
    }
}
var routes = Routes{
    Route{
        "Index",
        "GET",
        "/",
        index,
    },
    Route{
        "TodoIndex",
        "GET",
        "/todos",
        todoIndex,
    },
}

обработчики. go: (Функции todoIndex и index)

main. go:

    NewRouter()
    log.Fatal(http.ListenAndServe(":8080", Appl.Router))
...