| title |
Adaptor |
| date |
2023-01-11 |
| weight |
16 |
| keywords |
Adaptor |
http.Request |
http.ResponseWriter |
net/http |
|
| description |
Hertz provides access and related methods to Go standard library `http.Request` and `http.ResponseWriter`. |
Hertz provides access and related methods to Go standard library http.Request and http.ResponseWriter, it is easy for users to integrate net/http to develop application.
Note: This adaptation comes at a performance penalty
package main
import (
"context"
"fmt"
"net/http"
"github.com/cloudwego/hertz/pkg/app"
"github.com/cloudwego/hertz/pkg/app/server"
"github.com/cloudwego/hertz/pkg/common/adaptor"
)
func handler(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(200)
_, err := w.Write([]byte("Hello World"))
if err != nil {
fmt.Println(err)
return
}
}
func main() {
h := server.Default()
h.GET("/hello", func(ctx context.Context, c *app.RequestContext) {
req, err := adaptor.GetCompatRequest(&c.Request)
if err != nil {
fmt.Println(err)
return
}
// You may build more logic on req
fmt.Println(req.URL.String())
// caution: don't pass in c.GetResponse() as it return a copy of response
rw := adaptor.GetCompatResponseWriter(&c.Response)
handler(rw, req)
})
h.Spin()
}
| Function |
Function Signature |
Description |
GetCompatRequest |
func GetCompatRequest(req *protocol.Request) (*http.Request, error) |
Deprecated: Please use adaptor.HertzHandler instead. Build and fetch Go standard library http.Request from Hertz protocol.Request |
| CopyToHertzRequest |
func CopyToHertzRequest(req *http.Request, hreq *protocol.Request) |
Copy the URI, Host, Method, Protocol, Header of Go standard library http.Request to Hertz protocol.Request, The Body field will be adapted by sharing Reader |
| Function / Struct |
Function Signature |
Description |
GetCompatResponseWriter |
func GetCompatResponseWriter(resp *protocol.Response) http.ResponseWriter |
Deprecated: Please use adaptor.HertzHandler instead. Build and fetch Go standard library http.ResponseWriter from Hertz protocol.Response |
| compatResponse |
/ |
compatResponse implements the http.ResponseWriter interface and has adaptations to Header, Write and WriteHeader functions |
Hertz pprof middleware provides adaptation methods for the Go standard library http.Handler and http.HandlerFunc, it is easy for users to adapt to Hertz app.HandlerFunc for development.
| Function |
Function Signature |
Description |
| NewHertzHTTPHandlerFunc |
func NewHertzHTTPHandlerFunc(h http.HandlerFunc) app.HandlerFunc |
Used to convert Go standard library http.HandlerFunc to Hertz app.HandlerFunc |
| NewHertzHTTPHandler |
func NewHertzHTTPHandler(h http.Handler) app.HandlerFunc |
Used to convert Go standard library http.Handler to Hertz app.HandlerFunc |
- When modifying the resp header in the server handler, please use
write function to write the header. Otherwise, the modification will not take effect.
func handler(resp http.ResponseWriter, req *http.Request) {
resp.Header().Add("Content-Encoding", "test")
_, err := resp.Write([]byte("Content-Encoding: test\n"))
if err != nil {
panic(err)
}
}
Refer to hertz-example and pprof for more information