v3 #197
@ -559,6 +559,7 @@ func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
if r.Body != nil {
|
if r.Body != nil {
|
||||||
var buf []byte
|
var buf []byte
|
||||||
buf, err = io.ReadAll(r.Body)
|
buf, err = io.ReadAll(r.Body)
|
||||||
|
r.Body.Close()
|
||||||
if err != nil && err != io.EOF {
|
if err != nil && err != io.EOF {
|
||||||
h.errorHandler(ctx, handler, w, r, err, http.StatusInternalServerError)
|
h.errorHandler(ctx, handler, w, r, err, http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
|
41
util_test.go
41
util_test.go
@ -3,6 +3,9 @@ package http
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"go.unistack.org/micro/v3/options"
|
||||||
|
"go.unistack.org/micro/v3/server"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
@ -54,3 +57,41 @@ func TestFillrequest(t *testing.T) {
|
|||||||
t.Fatalf("FillRequest error: %#+v", req)
|
t.Fatalf("FillRequest error: %#+v", req)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_Hook(t *testing.T) {
|
||||||
|
opts := server.Options{}
|
||||||
|
|
||||||
|
var fn server.HandlerFunc = func(fctx context.Context, req server.Request, rsp interface{}) (err error) {
|
||||||
|
fmt.Println("1")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var fn2 server.HandlerWrapper = func(server.HandlerFunc) server.HandlerFunc {
|
||||||
|
return func(ctx context.Context, req server.Request, rsp interface{}) error {
|
||||||
|
fmt.Println("2")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var fn3 server.HandlerWrapper = func(server.HandlerFunc) server.HandlerFunc {
|
||||||
|
return func(ctx context.Context, req server.Request, rsp interface{}) error {
|
||||||
|
fmt.Println("3")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var fn4 server.HandlerWrapper = func(server.HandlerFunc) server.HandlerFunc {
|
||||||
|
return func(ctx context.Context, req server.Request, rsp interface{}) error {
|
||||||
|
fmt.Println("4")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
opts.Hooks = append(opts.Hooks, fn2, fn3, fn4)
|
||||||
|
|
||||||
|
opts.Hooks.EachNext(func(hook options.Hook) {
|
||||||
|
if h, ok := hook.(server.HandlerWrapper); ok {
|
||||||
|
fn = h(fn)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
fn(nil, nil, nil)
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user