小编nip*_*una的帖子

如何实现 gRPC 网关 mux 处理程序来处理多个 http 方法

我有使用gorilla/mux实现的 REST HTTP 处理程序。我正在尝试将它们迁移到 gRPC 中。有一些处理程序执行文件上传和下载。因此,我的客户决定在 gRPC 网关中实现这些处理程序。

我的 mux 处理程序之一处理多个 HTTP 方法,并根据一个处理程序函数中的 HTTP 方法执行操作。示例代码如下所示。

package main

import (
    "fmt"
    "github.com/gorilla/mux"
    "net/http"
)

func main() {
    r := mux.NewRouter()
    r.HandleFunc(`/doSomething`, func(writer http.ResponseWriter, request *http.Request) {
        switch request.Method {
        case http.MethodPost:
            // create something
            fmt.Fprint(writer, "POST")
        case http.MethodGet:
            // return something
            fmt.Fprint(writer, "GET")
        case http.MethodPut:
            // update something
            fmt.Fprint(writer, "PUT")
        case http.MethodDelete:
            // delete something
            fmt.Fprint(writer, "DELETE")

        }
    })
    http.ListenAndServe(`:5000`, r)
}
Run Code Online (Sandbox Code Playgroud)

当我实现类似的 grpc 网关复用处理程序来使用grpc-ecosystem/grpc-gateway/v2.3.0处理这些请求时,我必须编写单独的处理程序函数来处理同一路径的不同 HTTP 方法。示例代码如下。

package …
Run Code Online (Sandbox Code Playgroud)

http go gorilla grpc-gateway grpc-go

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

在整个应用程序中使用相同的零日志设置

我正在使用自己开发的包开发Go应用程序,我决定使用zerolog日志。在初始化文件中,我初始化了一个零日志记录器以将日志保存到多个输出中,但是如何在所有开发的包中使用该设置?有一些最佳实践吗?是否可以使用该设置而无需每次都将记录器传递给包?

logging go

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

标签 统计

go ×2

gorilla ×1

grpc-gateway ×1

grpc-go ×1

http ×1

logging ×1