Skip to content

Gin 与 Echo

Go 最流行的 Web 框架:

package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
type User struct {
Name string `json:"name"`
Email string `json:"email"`
}
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "pong"})
})
r.POST("/users", func(c *gin.Context) {
var user User
if err := c.ShouldBindJSON(&user); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusCreated, user)
})
// 路径参数
r.GET("/users/:id", func(c *gin.Context) {
id := c.Param("id")
c.JSON(http.StatusOK, gin.H{"id": id})
})
r.Run(":8080")
}

极简高性能 Web 框架:

package main
import (
"net/http"
"github.com/labstack/echo/v4"
)
func main() {
e := echo.New()
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Hello, Echo!")
})
e.GET("/users/:id", func(c echo.Context) error {
id := c.Param("id")
return c.JSON(http.StatusOK, map[string]string{"id": id})
})
e.Logger.Fatal(e.Start(":1323"))
}
特性GinEcho
性能极高极高
中间件丰富内置更多
文档社区丰富官方完善
自动 TLS需额外配置内置 Let’s Encrypt
学习曲线

两者性能接近,Gin 社区更大,Echo 功能更全。选择取决于个人偏好。