小编Cas*_*337的帖子

Golang MVC 结构

我搜索了很多网站,在 GitHub 上看到了很多来源,但没有找到解决方案。

我在 Golang 中创建了一个 MVC 网站模式:

  • 应用程序
    • 控制器
    • 楷模
    • lib(所有功能类/函数)
    • 中间件
    • 路由器
  • 资源
    • 意见
  • main.go

我的问题是:如何注入配置以获得无处不在的设置和其他始终需要的实现类(如加载速度单页)。

另一件事(另外):任何人都可以向我推荐好的材料或转录 MVC 技巧的想法将 MVC 与 Golang 一起使用(一般有用的信息)。

model-view-controller design-patterns function go

6
推荐指数
1
解决办法
7329
查看次数

如何将参数传递给 MiddlewareFunc?

我正在做一个小演示,试图解释一个基本的 HTTP 处理程序是如何工作的,我发现了以下示例:

package main

func router() *mux.Router {
    router := mux.NewRouter()
    auth := router.PathPrefix("/auth").Subrouter()
    auth.Use(auth.ValidateToken)
    auth.HandleFunc("/api", middleware.ApiHandler).Methods("GET")
    return router
}

func main() {
    r := router()
    http.ListenAndServe(":8080", r)
}
Run Code Online (Sandbox Code Playgroud)
package auth

func ValidateToken(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        var header = r.Header.Get("secret-access-token")

        json.NewEncoder(w).Encode(r)
        header = strings.TrimSpace(header)

        if header == "" {
            w.WriteHeader(http.StatusForbidden)
            json.NewEncoder(w).Encode("Missing auth token")
            return
        }

        if header != "SecretValue" {
            w.WriteHeader(http.StatusForbidden)
            json.NewEncoder(w).Encode("Auth token is invalid")
            return
        }


        json.NewEncoder(w).Encode(fmt.Sprintf("Token found. Value %s", header))
        next.ServeHTTP(w, …
Run Code Online (Sandbox Code Playgroud)

rest http backend go mux

1
推荐指数
1
解决办法
568
查看次数