From 4ec29dc2d9941c821399d246f3ac479f74fe1ad3 Mon Sep 17 00:00:00 2001 From: AH-dark Date: Tue, 23 Aug 2022 12:52:25 +0800 Subject: [PATCH] feat: `Handles` method supports setting multiple http methods for a request handle at the same time --- routergroup.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/routergroup.go b/routergroup.go index 2474a81c..93c8e054 100644 --- a/routergroup.go +++ b/routergroup.go @@ -106,6 +106,19 @@ func (group *RouterGroup) Handle(httpMethod, relativePath string, handlers ...Ha return group.handle(httpMethod, relativePath, handlers) } +// Handles registers multiple new request handle with the given path and method. +// Its specific usage is the same as the Handle method, but it supports setting multiple http methods at the same time. +func (group *RouterGroup) Handles(httpMethods []string, relativePath string, handlers ...HandlerFunc) IRoutes { + for _, method := range httpMethods { + if matched := regEnLetter.MatchString(method); !matched { + panic("http method " + method + " is not valid") + } + group.handle(method, relativePath, handlers) + } + + return group.returnObj() +} + // POST is a shortcut for router.Handle("POST", path, handle). func (group *RouterGroup) POST(relativePath string, handlers ...HandlerFunc) IRoutes { return group.handle(http.MethodPost, relativePath, handlers)