您好,欢迎来到纷纭教育。
搜索
您的当前位置:首页go echo mysql_Golang ECHO框架入门【1】

go echo mysql_Golang ECHO框架入门【1】

来源:纷纭教育

一、介绍

echo web框架是go语言开发的一种高性能,可扩展,轻量级的web框架。

echo框架真的非常的简单,几行代码就可以启动一个高性能的http服务端。

如果你只是测试返回hello world这种简单逻辑,普通的低配服务器,每秒扛个万八千QPS没什么问题,这个主要跟服务器配置有关,当然实际应用中的业务逻辑不会是hello world那么简单,业务不同,系统设计不同吞吐量肯定不一样。

echo框架默认其实只包含了MVC框架的C部分,就是负责url路由和控制器部分。至于V视图部分和M数据操作部分可以随意使用自己喜欢的工具库来操作。

二、安装

安装echo包

go get github.com/labstack/echo/

三、如何开始一个Http Server。

创建httpserver.go文件,代码如下:

package main

import (

"net/http"

//导入echo包

"github.com/labstack/echo"

)

func main() {

//实例化echo对象。

e := echo.New()

e.GET("/hello", func(c echo.Context) error {

//控制器函数直接返回一个字符串,http响应状态为http.StatusOK,就是200状态。

return c.String(http.StatusOK, "hello echo")

})

e.Start(":8080")

}

运行http server

$ go run httpserver.go

echo web框架的代码非常简洁,就几行代码一个http server的主要的初始化工作就搞定了,只要添加自己的业务代码就行。

四、项目结构

通过上面的例子,知道echo大致是怎么使用的,但是实际项目业务功能会很多,不可能把所有代码都写在一个go文件里面或者写在一个main入口函数里面;需要对项目结构做一些规划,方便维护代码以及扩展。

echo web框没有对项目结构做出,根据自己项目需要自行设计。

这里给出一个典型的MVC框架大致的项目结构的例子,参考如下:

│ └── config.toml #可以选择自己熟悉的配置文件管理工具包例如:toml、xml等等

│ ├── food.go

│ └── user.go

├── main.go #项目入口,这里负责echo框架的初始化,注册路由信息,关联控制器函数等。

│ ├── food.go

│ └── user.go

│ ├── css

│ ├── images

│ └── js

└── index.html

五、路由&控制器

1.路由

echo框架的路由定义如下:

//定义post请求, url为:/users, 绑定saveUser控制器函数

e.POST("/users", saveUser)

//定义get请求,url模式为:/users/:id (:id是参数,例如: /users/10, 会匹配这个url模式),绑定getUser控制器函数

e.GET("/users/:id", getUser)

//定义put请求

e.PUT("/users/:id", updateUser)

//定义delete请求go

e.DELETE("/users/:id", deleteUser)

2.控制器

在echo框架中,控制器是一个函数,需要根据业务实现各种控制器函数,控制器函数定义如下:

//控制器函数只接受一个echo.Context上下文参数

//参数:c 是上下文参数,关联了当前请求和响应,通过c参数可以获取请求参数,向客户端响应结果。

func HandlerFunc(c echo.Context) error

例子:

// 路由定义:e.GET("/users/:id", getUser)

// getUser控制器函数实现

func getUser(c echo.Context) error {

// 获取url上的path参数,url模式里面定义了参数:id

id := c.Param("id")

//响应一个字符串,这里直接把id以字符串的形式返回给客户端。

return c.String(http.StatusOK, id)

}

六、echo如何获取请求参数

控制获取请求参数的例子:

func getUser(c echo.Context) error {

// 方式1:获取url上的path参数,url模式里面定义了参数:id

id := c.Param("id")

//方式2:获取query参数,例如:/users?username=tizi365&type=2

username := c.QueryParam("username") //值为:"tizi365"

usertype := c.QueryParam("type") //值为:"2"

//方式3:获取post请求的表单参数

username := c.FormValue("username")

usertype := c.FormValue("type")

return c.String(http.StatusOK, "获取参数例子")

}

七、响应请求

echo框架支持以文本、html、Json、xml多种格式的内容形式响应Http请求。

控制器响应请求的例子:

type User struct {

Id int

Username string

}

func getUser(c echo.Context) error {

//方式1: 返回字符串

//以字符串的形式返回,c.String语法:c.String(http状态码,"字符串内容")

return c.String(http.StatusOK, "获取参数例子")

//方式2:返回JSON

//以json字符串的形式返回结果,c.JSON语法: c.JSON(http状态码, 结构体变量)

u := User{2, "tizi365"}

return c.JSON(http.StatusOK, u) //返回结果:{"id":2,"username":"tizi365"}

//方式3: 返回HTML

//以网页形式返回html代码,c.HTML语法: c.HTML(http状态码, "html内容")

html := "

tizi365.com欢迎访问tizi365.com"

//当然实际项目,不会这样拼写html代码,太麻烦,一会使用模板引擎处理Html代码,然后把结果通过c.HTML返回给客户端就行。

return c.HTML(http.StatusOK, html)

}

八、如何展示静态内容

对于js、css、png、jpg这些静态内容,echo框架通过一个配置就可以实现静态资源的展示。

例子:

e := echo.New()

...忽略其他初始化代码...

e.Static("/static", "static")

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- fenyunshixun.cn 版权所有 湘ICP备2023022495号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务