携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情
Echo项目于15年正式开源,时至今日已更新到4.x的版本,Echo在推崇极简主义的同时,还具有完善的Web功能、清晰的文档结构。
Echo 安装
使用go init my-app初始化项目后,使用以下命令安装echo
go get github.com/labstack/echo/v4
快速上手
Echo 项目的启动也比较简单,核心步骤主要分为三个步骤:获取Echo结构体-->注册路由-->指定项目端口,按以下代码运行后,访问地址 http://127.0.0.1:1323 可得到返回的JSON数据
// 获取Echo对象
e := echo.New()
// 将路由地址与处理函数进行绑定
e.GET("/", func(c echo.Context) error {
return c.JSON(http.StatusOK, echo.Map{
"code": 200,
"msg": "Success",
})
})
// 启动服务并监听1323端口
e.Logger.Fatal(e.Start(":1323"))
获取前端传递的参数
前端传递参数的方式主要分为以下四种:1.在路由中约定不同URI代表不同的值;2.在请求地址中设置参数;3.使用FORM表单传值;4.传递JSON格式的数据
获取URI中的参数
通过Param方法获取在路由中携带过来的值
// curl 127.0.0.1:1323/user/123
e.GET("/user/:id", func(c echo.Context) error {
return c.String(http.StatusOK, "ID ==> " + c.Param("id")) // ID ==> 123
})
获取请求地址中设置的参数
使用QueryParam获取地址中传递过来的参数
// curl 127.0.0.1:1323/user?id=123
e.GET("/user", func(c echo.Context) error {
return c.String(http.StatusOK, "ID ==> " + c.QueryParam("id")) // ID ==> 123
})
获取FORM表单传递的值
使用FormValue获取表单传递过来的参数
// curl -X POST -d 'id=123' 127.0.0.1:1323/user
e.POST("/user", func(c echo.Context) error {
return c.String(http.StatusOK, "ID ==> " + c.FormValue("id"))
})
解析传递的JSON数据
对于JSON数据需要先定义一个接受数据的结构体,然后使用Bind方法将前端传递过来的数据进行映射
// curl -X POST -H 'Content-Type: application/json' -d '{"id":"123"}' 127.0.0.1:1323/user
// 定义数据映射结构体
type Data struct {
Id string
}
// 处理请求
e.POST("/user", func(c echo.Context) error {
d := new(Data)
err := c.Bind(d)
if err != nil {
log.Fatalln(err)
}
return c.String(http.StatusOK, "ID ==> " + d.Id)
})
参数返回
Echo支持多种类型的返回参数,例如:JSON、XML、STRING、HTML、FILE、STREAM等,这里主要分析前三种返回参数的使用
返回JSON
使用JSON方法返回JSON格式的数据,其中传递的参数支持结构体、Map
- 使用结构体返回数据
// curl 127.0.0.1:1323/user
e.GET("/user", func(c echo.Context) error {
d := &Data{Id: "123"}
return c.JSON(http.StatusOK, d)
})
- 使用Map返回数据
// curl 127.0.0.1:1323/user
e.GET("/user", func(c echo.Context) error {
return c.JSON(http.StatusOK, echo.Map{
"id": "123",
})
})
返回XML
使用XML方法将结构体数据处理为XML格式再返回
// curl 127.0.0.1:1323/user
e.GET("/user", func(c echo.Context) error {
d := &Data{Id: "123"}
return c.XML(http.StatusOK, d)
})
返回STRING
使用String方法直接返回字符串,可参考上述案例,这里就不再赘述
静态站点部署
使用Static方法可以配置静态资源文件的访问,配置完成后使用地址127.0.0.1:1323/static/xxx.png,可以获取静态文件夹中的xxx.png这个图片
// /static 访问地址
// D:\myself\static 静态文件夹地址
e.Static("/static", "D:\myself\static")