From 1e469dda3c740d3d7e742ab3101844a172749f67 Mon Sep 17 00:00:00 2001 From: qowevisa Date: Fri, 2 Aug 2024 18:14:06 +0300 Subject: [PATCH] Add gin and swagger to http-server --- cmd/http-server/main.go | 68 +++++++++++++++++++++++++++++++++++++--- cmd/http-server/types.go | 7 +++++ 2 files changed, 70 insertions(+), 5 deletions(-) create mode 100644 cmd/http-server/types.go diff --git a/cmd/http-server/main.go b/cmd/http-server/main.go index c00980a..5da54b9 100644 --- a/cmd/http-server/main.go +++ b/cmd/http-server/main.go @@ -2,18 +2,76 @@ package main import ( "fmt" - "net/http" + + "github.com/swaggo/files" + "github.com/swaggo/gin-swagger" "git.qowevisa.me/Qowevisa/gonuts/db" + docs "git.qowevisa.me/Qowevisa/gonuts/docs" + "github.com/gin-gonic/gin" ) +// @title Swagger Example API +// @version 1.0 +// @description This is a sample server celler server. +// @termsOfService http://swagger.io/terms/ + +// @contact.name API Support +// @contact.url http://www.swagger.io/support +// @contact.email support@swagger.io + +// @license.name Apache 2.0 +// @license.url http://www.apache.org/licenses/LICENSE-2.0.html + +// @host localhost:3000 +// @BasePath /api func main() { dbc := db.Connect() if dbc != nil { fmt.Printf("yay\n") } - http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - fmt.Fprintf(w, "Hello, World!") - }) - http.ListenAndServe(":8080", nil) + r := gin.Default() + docs.SwaggerInfo.BasePath = "/api" + + // Routes defined in the routes package + routes := r.Group("/api") + { + routes.GET("/home", getHome) + routes.GET("/user/:name", getUser) + } + + r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) + + r.Run(":3000") +} + +// @Summary Says hello +// @Description Get an account by ID +// @Tags hello hello2 +// @Accept json +// @Produce json +// @Param id path int true "Account ID" +// @Success 200 {object} Account +// @Failure 400 {object} ErrorResponse +// @Router /home [get] +func getHome(c *gin.Context) { + c.JSON(200, gin.H{ + "message": "Welcome to the API!", + }) +} + +// @Summary Says hello1 +// @Description Get an account by ID1 +// @Tags hello hello2 +// @Accept json +// @Produce json +// @Param id path int true "Account ID" +// @Success 200 {object} Account +// @Failure 400 {object} ErrorResponse +// @Router /accounts/{id} [get] +func getUser(c *gin.Context) { + name := c.Param("name") + c.JSON(200, gin.H{ + "message": "Hello, " + name + "!", + }) } diff --git a/cmd/http-server/types.go b/cmd/http-server/types.go new file mode 100644 index 0000000..4f8e525 --- /dev/null +++ b/cmd/http-server/types.go @@ -0,0 +1,7 @@ +package main + +type Account struct { +} + +type ErrorResponse struct { +}