router.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package util
  2. import (
  3. "net/http"
  4. "runtime"
  5. "github.com/chuangxin1/httprouter"
  6. )
  7. // Handle is a function that can be registered to a route to handle HTTP
  8. // requests. Like http.HandlerFunc.
  9. type Handle func(http.ResponseWriter, *http.Request)
  10. // NewRouter new http router with default route
  11. func NewRouter() *httprouter.Router {
  12. router := httprouter.New()
  13. router.NotFound = http.HandlerFunc(notFoundHandler)
  14. router.PanicHandler = panicHandler
  15. router.MethodNotAllowed = http.HandlerFunc(notAllowedHandler)
  16. //router.GET("/api/ver", defaultHandler)
  17. //router.GET("/api/health", defaultHandler)
  18. //router.Handler("GET", "/metrics", promhttp.Handler())
  19. return router
  20. }
  21. func defaultHandler(w http.ResponseWriter, r *http.Request) {
  22. ver := map[string]string{
  23. "version": "0.4.0",
  24. "comments": "GMS"}
  25. WriteJSON(w, RowReplyData(ver))
  26. }
  27. func panicHandler(w http.ResponseWriter, r *http.Request, err interface{}) {
  28. e := err.(runtime.Error)
  29. WriteJSON(w, ErrReplyData(ErrException, e.Error()))
  30. }
  31. func notFoundHandler(w http.ResponseWriter, req *http.Request) {
  32. WriteJSON(w, ErrReplyData(ErrNotFound, `NotFound`))
  33. }
  34. func notAllowedHandler(w http.ResponseWriter, req *http.Request) {
  35. WriteJSON(w, ErrReplyData(ErrNotAllowed, `Method Not Allowed`))
  36. }
  37. // AddHandler add handler to router
  38. func AddHandler(router *httprouter.Router, method, route string, handler http.Handler) {
  39. router.Handler(method, route, handler)
  40. }
  41. // AddGetHandle add handle to router
  42. func AddGetHandle(router *httprouter.Router, route string, handle Handle) {
  43. router.GET(route, httprouter.Handle(handle))
  44. }
  45. // AddPostHandle add handle to router
  46. func AddPostHandle(router *httprouter.Router, route string, handle Handle) {
  47. router.POST(route, httprouter.Handle(handle))
  48. }
  49. // AddPutHandle add handle to router
  50. func AddPutHandle(router *httprouter.Router, route string, handle Handle) {
  51. router.PUT(route, httprouter.Handle(handle))
  52. }
  53. // AddHeadHandle add handle to router
  54. func AddHeadHandle(router *httprouter.Router, route string, handle Handle) {
  55. router.HEAD(route, httprouter.Handle(handle))
  56. }
  57. // AddDeleteHandle add handle to router
  58. func AddDeleteHandle(router *httprouter.Router, route string, handle Handle) {
  59. router.DELETE(route, httprouter.Handle(handle))
  60. }
  61. // AddPatchHandle add handle to router
  62. func AddPatchHandle(router *httprouter.Router, route string, handle Handle) {
  63. router.PATCH(route, httprouter.Handle(handle))
  64. }
  65. // AddOptionsHandle add handle to router
  66. func AddOptionsHandle(router *httprouter.Router, route string, handle Handle) {
  67. router.OPTIONS(route, httprouter.Handle(handle))
  68. }