move down path handler after specific handler #163
							
								
								
									
										19
									
								
								handler.go
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								handler.go
									
									
									
									
									
								
							| @@ -334,12 +334,6 @@ func (h *Server) HTTPHandlerFunc(handler interface{}) (http.HandlerFunc, error) | |||||||
| } | } | ||||||
|  |  | ||||||
| func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { | func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { | ||||||
| 	// check for http.HandlerFunc handlers |  | ||||||
| 	if ph, _, err := h.pathHandlers.Search(r.Method, r.URL.Path); err == nil { |  | ||||||
| 		ph.(http.HandlerFunc)(w, r) |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	ct := DefaultContentType | 	ct := DefaultContentType | ||||||
| 	if htype := r.Header.Get(metadata.HeaderContentType); htype != "" { | 	if htype := r.Header.Get(metadata.HeaderContentType); htype != "" { | ||||||
| 		ct = htype | 		ct = htype | ||||||
| @@ -364,10 +358,6 @@ func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { | |||||||
| 	md["RequestURI"] = r.RequestURI | 	md["RequestURI"] = r.RequestURI | ||||||
| 	ctx = metadata.NewIncomingContext(ctx, md) | 	ctx = metadata.NewIncomingContext(ctx, md) | ||||||
|  |  | ||||||
| 	if r.Body != nil { |  | ||||||
| 		defer r.Body.Close() |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	path := r.URL.Path | 	path := r.URL.Path | ||||||
| 	if !strings.HasPrefix(path, "/") { | 	if !strings.HasPrefix(path, "/") { | ||||||
| 		h.errorHandler(ctx, nil, w, r, fmt.Errorf("path must starts with /"), http.StatusBadRequest) | 		h.errorHandler(ctx, nil, w, r, fmt.Errorf("path must starts with /"), http.StatusBadRequest) | ||||||
| @@ -424,6 +414,11 @@ func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { | |||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| 	} else if !match { | 	} else if !match { | ||||||
|  | 		// check for http.HandlerFunc handlers | ||||||
|  | 		if ph, _, err := h.pathHandlers.Search(r.Method, r.URL.Path); err == nil { | ||||||
|  | 			ph.(http.HandlerFunc)(w, r) | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
| 		h.errorHandler(ctx, nil, w, r, fmt.Errorf("not matching route found"), http.StatusNotFound) | 		h.errorHandler(ctx, nil, w, r, fmt.Errorf("not matching route found"), http.StatusNotFound) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| @@ -440,6 +435,10 @@ func (h *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	if r.Body != nil { | ||||||
|  | 		defer r.Body.Close() | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	cf, err := h.newCodec(ct) | 	cf, err := h.newCodec(ct) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		h.errorHandler(ctx, nil, w, r, err, http.StatusBadRequest) | 		h.errorHandler(ctx, nil, w, r, err, http.StatusBadRequest) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user