问答详情
源自:5-1 课程总结

gin相比原生net/http优势

老师同学们好,想请问一下gin相当于封装了原生的net/http,相比原生的net/http有哪些优势,哪些方面给大家带来了方便。谢谢。

提问者:慕工程7758632 2020-02-20 16:57

个回答

  • qq_慕神4455118
    2021-12-06 09:41:25

    http库只是基本的架子,还缺少很多问题。Gin进一步封装,让我们能更快使用——比如,http中的http.Request

    .Body只会读一次,第二次是读不到的,然后你使用的话需要自己保存;但是用Gin后,它会帮你做好保存让你直接使用,这样更加符合开发的逻辑。总之,Gin就是弥补了原生http库的不足,并且这些补充都是适用了的最佳实践方式。

    ```go

    func readBodyOnce(w http.ResponseWriter, r *http.Request)  {

        body, err := io.ReadAll(r.Body)

        if err != nil {

            fmt.Fprintf(w, "read body failed: %v", err)

            // 记住要返回,不然就还会执行后面的代码

            return

        }

        // 类型转换,将 []byte 转换为 string

        fmt.Fprintf(w, "read the data: %s \n", string(body))


        // 尝试再次读取,啥也读不到,但是也不会报错

        body, err = io.ReadAll(r.Body)

        if err != nil {

            // 不会进来这里

            fmt.Fprintf(w, "read the data one more time got error: %v", err)

            return

        }

        fmt.Fprintf(w, "read the data one more time: [%s] and read data length %d \n", string(body), len(body))

    }

    ```




  • 小彗星麦兜
    2021-03-11 21:59:01

    反正快就对了