我尝试从 Go net/http 转换为 Go Fiber,如何进行转换?

我是 golang 的新手,然后我学习了,我喜欢 Go 纤维。我从 Go Fiber 中学习,我看到 net/http 示例非常酷。然后我尝试将 Go net/http 示例转换为 Go 光纤。


下面是上网/http


package main


import (

    "embed"

    "io/fs"

    "log"

    "net/http"

    "runtime/pprof"

)


//go:embed nextjs/dist

//go:embed nextjs/dist/_next

//go:embed nextjs/dist/_next/static/chunks/pages/*.js

//go:embed nextjs/dist/_next/static/*/*.js

var nextFS embed.FS


func main() {

    // Root at the `dist` folder generated by the Next.js app.

    distFS, err := fs.Sub(nextFS, "nextjs/dist")

    if err != nil {

        log.Fatal(err)

    }


    // The static Next.js app will be served under `/`.

    http.Handle("/", http.FileServer(http.FS(distFS)))

    // The API will be served under `/api`.

    http.HandleFunc("/api", handleAPI)


    // Start HTTP server at :8080.

    log.Println("Starting HTTP server at http://localhost:8080 ...")

    log.Fatal(http.ListenAndServe(":8080", nil))

}


func handleAPI(w http.ResponseWriter, _ *http.Request) {

    // Gather memory allocations profile.

    profile := pprof.Lookup("allocs")


    // Write profile (human readable, via debug: 1) to HTTP response.

    err := profile.WriteTo(w, 1)

    if err != nil {

        log.Printf("Error: Failed to write allocs profile: %v", err)

    }

}


米琪卡哇伊
浏览 131回答 1
1回答

临摹微笑

我认为你可以替换这个:  app.Get("/api", func(c *fiber.Ctx) error {    profile := pprof.Lookup("allocs")    return c.Get(profile)  })有了这个:  app.Get("/api", func(c *fiber.Ctx) error {    profile := pprof.Lookup("allocs")    return profile.WriteTo(c, 1)  })*fiber.Ctximplements io.Writer,因此您应该能够像http.ResponseWriter在这种情况下一样使用它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go