Golang轻量级Web框架 - 类似Sinatra的实现

Golang轻量级Web框架 - 类似Sinatra的实现 Go语言是否有类似于Ruby Sinatra的Web框架?

2 回复

Fiber 对我来说是更好的选择。我之前使用过 SinatraRb 和 PadrinoRb。不妨试一试:https://gofiber.io/

更多关于Golang轻量级Web框架 - 类似Sinatra的实现的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


是的,Go语言中有多个轻量级Web框架,其设计理念与Ruby Sinatra类似,即通过简洁的路由和中间件机制快速构建Web应用。以下是几个典型的框架及其示例:

  1. Gin:高性能框架,支持路由分组、中间件和JSON验证。
package main
import "github.com/gin-gonic/gin"
func main() {
    r := gin.Default()
    r.GET("/hello", func(c *gin.Context) {
        c.JSON(200, gin.H{"message": "Hello, World!"})
    })
    r.Run(":8080")
}
  1. Echo:轻量级框架,强调高性能和简洁的API设计。
package main
import (
    "net/http"
    "github.com/labstack/echo/v4"
)
func main() {
    e := echo.New()
    e.GET("/hello", func(c echo.Context) error {
        return c.String(http.StatusOK, "Hello, World!")
    })
    e.Start(":8080")
}
  1. Fiber:受Express.js启发,基于Fasthttp构建,注重速度和低内存占用。
package main
import "github.com/gofiber/fiber/v2"
func main() {
    app := fiber.New()
    app.Get("/hello", func(c *fiber.Ctx) error {
        return c.SendString("Hello, World!")
    })
    app.Listen(":8080")
}

这些框架均支持Sinatra风格的路由定义,无需复杂配置即可处理HTTP请求。例如,Gin和Echo提供了类似Sinatra的路由语法:

// Gin示例:POST路由
r.POST("/users", func(c *gin.Context) {
    c.JSON(201, gin.H{"status": "created"})
})

// Echo示例:路径参数
e.GET("/users/:id", func(c echo.Context) error {
    id := c.Param("id")
    return c.String(http.StatusOK, "User ID: " + id)
})

对于中间件支持,这些框架允许通过Use方法添加全局或路由级中间件,类似Sinatra的before/after过滤器:

// Gin中间件示例
r.Use(func(c *gin.Context) {
    c.Header("X-Custom-Header", "Gin")
    c.Next()
})

// Echo中间件示例
e.Use(func(next echo.HandlerFunc) echo.HandlerFunc {
    return func(c echo.Context) error {
        c.Response().Header().Set("X-Custom-Header", "Echo")
        return next(c)
    }
})

选择时可根据性能需求、中间件生态和项目规模决定:Gin适合高并发场景,Echo以简洁性见长,Fiber则优化了内存使用。

回到顶部