v3 #197
@@ -559,6 +559,7 @@ func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	if r.Body != nil {
 | 
			
		||||
		var buf []byte
 | 
			
		||||
		buf, err = io.ReadAll(r.Body)
 | 
			
		||||
		r.Body.Close()
 | 
			
		||||
		if err != nil && err != io.EOF {
 | 
			
		||||
			h.errorHandler(ctx, handler, w, r, err, http.StatusInternalServerError)
 | 
			
		||||
			return
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										41
									
								
								util_test.go
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								util_test.go
									
									
									
									
									
								
							@@ -3,6 +3,9 @@ package http
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"context"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"go.unistack.org/micro/v3/options"
 | 
			
		||||
	"go.unistack.org/micro/v3/server"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"testing"
 | 
			
		||||
@@ -54,3 +57,41 @@ func TestFillrequest(t *testing.T) {
 | 
			
		||||
		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)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user