39 lines
694 B
Go
39 lines
694 B
Go
package http
|
|
|
|
import (
|
|
"apps/internal/fibonacci"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/chenjiandongx/ginprom"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
|
)
|
|
|
|
func StartServer() error {
|
|
r := gin.Default()
|
|
|
|
r.Use(ginprom.PromMiddleware(nil))
|
|
|
|
r.GET("/fibonacci", CalculateFibonacci)
|
|
r.GET("/metrics", gin.WrapH(promhttp.Handler()))
|
|
|
|
return r.Run() // listen and serve on 0.0.0.0:8080
|
|
}
|
|
|
|
func CalculateFibonacci(c *gin.Context) {
|
|
|
|
numberstr := c.Query("number")
|
|
|
|
result, err := fibonacci.FibonacciFromString(numberstr)
|
|
|
|
if err != nil {
|
|
c.AbortWithStatus(http.StatusBadRequest)
|
|
|
|
return
|
|
}
|
|
|
|
c.JSON(200, gin.H{
|
|
"result": fmt.Sprint(result),
|
|
})
|
|
}
|