From f6102f4fd61d71788ba5083c7be57ae7d8e0fd2a Mon Sep 17 00:00:00 2001 From: Phil Date: Mon, 3 Mar 2025 20:38:51 +0100 Subject: [PATCH] Added basic layout --- README.md | 3 +-- config/gofiber_config.go | 10 ++++++++++ go.mod | 19 +++++++++++++++++++ go.sum | 27 +++++++++++++++++++++++++++ main.go | 18 ++++++++++++++++++ routes/default.go | 7 +++++++ util/gofiber_errorhandler.go | 17 +++++++++++++++++ 7 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 config/gofiber_config.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go create mode 100644 routes/default.go create mode 100644 util/gofiber_errorhandler.go diff --git a/README.md b/README.md index 7cb4a24..22dd503 100644 --- a/README.md +++ b/README.md @@ -1,2 +1 @@ -# gofiber-api-template - +# gofiber-api-template \ No newline at end of file diff --git a/config/gofiber_config.go b/config/gofiber_config.go new file mode 100644 index 0000000..5dccc65 --- /dev/null +++ b/config/gofiber_config.go @@ -0,0 +1,10 @@ +package config + +import ( + "git.hackmi.ch/Phil/gofiber-api-template/util" + "github.com/gofiber/fiber/v2" +) + +var FiberConfig = fiber.Config{ + ErrorHandler: util.Gofiber_Errorhandler, +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..e863429 --- /dev/null +++ b/go.mod @@ -0,0 +1,19 @@ +module git.hackmi.ch/Phil/gofiber-api-template + +go 1.24.0 + +require github.com/gofiber/fiber/v2 v2.52.6 + +require ( + github.com/andybalholm/brotli v1.1.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/klauspost/compress v1.17.9 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/rivo/uniseg v0.2.0 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fasthttp v1.51.0 // indirect + github.com/valyala/tcplisten v1.0.0 // indirect + golang.org/x/sys v0.28.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..edf0334 --- /dev/null +++ b/go.sum @@ -0,0 +1,27 @@ +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/gofiber/fiber/v2 v2.52.6 h1:Rfp+ILPiYSvvVuIPvxrBns+HJp8qGLDnLJawAu27XVI= +github.com/gofiber/fiber/v2 v2.52.6/go.mod h1:YEcBbO/FB+5M1IZNBP9FO3J9281zgPAreiI1oqg8nDw= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA= +github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g= +github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= diff --git a/main.go b/main.go new file mode 100644 index 0000000..aba41bd --- /dev/null +++ b/main.go @@ -0,0 +1,18 @@ +package main + +import ( + "git.hackmi.ch/Phil/gofiber-api-template/config" + "git.hackmi.ch/Phil/gofiber-api-template/routes" + "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/middleware/recover" +) + +func main() { + app := fiber.New(config.FiberConfig) + + app.Use(recover.New()) + + app.Get("/", routes.Default) + + app.Listen(":3000") +} diff --git a/routes/default.go b/routes/default.go new file mode 100644 index 0000000..f5b11a3 --- /dev/null +++ b/routes/default.go @@ -0,0 +1,7 @@ +package routes + +import "github.com/gofiber/fiber/v2" + +func Default(c *fiber.Ctx) error { + return c.SendString("Default route") +} diff --git a/util/gofiber_errorhandler.go b/util/gofiber_errorhandler.go new file mode 100644 index 0000000..47aede4 --- /dev/null +++ b/util/gofiber_errorhandler.go @@ -0,0 +1,17 @@ +package util + +import ( + "errors" + + "github.com/gofiber/fiber/v2" +) + +func Gofiber_Errorhandler(c *fiber.Ctx, err error) error { + code := fiber.StatusInternalServerError + var e *fiber.Error + if errors.As(err, &e) { + code = e.Code + } + c.Set(fiber.HeaderContentType, fiber.MIMETextPlainCharsetUTF8) + return c.Status(code).SendString(err.Error()) +}