在进行beego集成时,如果是新项目建议 使用命令直接生成项目的主结构,如果是老项目就自己手动集成:
下面是手动集成的步骤:
go get github.com/astaxie/beego #下载依赖包,这是主依赖包
如果新项目需要去创建目录结构,需要下载bee工具包
go get -u github.com/beego/bee #这个会在gopath/bin下生成bee.exe可执行文件,记得配置环境变量
这里把新建的步骤也说下吧 也不费啥事:
1,创建一个目录(非gopath下)我们使用module模式,急着改环境变量和proxy
2, 在此目录下执行
go mod init 项目名称(为了方便跟当前目录同名即可)完成后会在当前目录下生成一个go.mod的文件,此时已经初始化成共mod
3, 创建beego项目
在上级目录执行
bee new beego #这里的beego是我的项目名称也是下级目录的名称,这里一定要注意
生成时会报是否覆盖beego目录因为已经存在,输入yes
最终生成的目录结构如下:
以上就是新建beego项目,这个其实不灵活。我们还是接着讲我们手动集成吧
手动集成部分:
1,在已有的项目根目录下新建目录conf,因为beego默认的配置文件是在此目录下如果不指定启动时可能会报错,
2,在conf目录下新建文件 app.conf,默认配置文件就是这个文件,此文件可以为空
3,在现有项目下新建router目录
4,新建文件beegoroute.go 其实文件名自己可以随便命名
5,在beegoroute.go中初始beego
下面看看我的代码:
import ( "encoding/json" "fmt" "github.com/astaxie/beego" "io/ioutil" ) //这里我通过init方法来设置路由
func init(){ beego.Router("/getrequest", &HelloController{},"GET:Get") beego.Router("/postrequest", &HelloController{},"POST:Post") } func NewBeegoServer(){ beego.BConfig.Listen.HTTPPort = 8080 #设置beego server的监听端口 beego.BConfig.RunMode = "dev" #应用的运行模式,可选值为prod
,dev
或者test
. 默认是dev
, 为开发模式,在开发模式下出错会提示友好的出错页面,如前面错误描述中所述。 beego.BConfig.ServerName = "mywebapp" 启动时输出的项目名 beego.Run() }
下面是我定义的测试用的controller 这里我为了方便就直接跟router 定义在了一起,真正开发时不要这么做
下面是我的beego的所有代码:
package service import ( "encoding/json" "fmt" "github.com/astaxie/beego" "io/ioutil" ) func init(){ beego.Router("/getrequest", &HelloController{},"GET:Get")//明确指定用哪个方法 beego.Router("/postrequest", &HelloController{},"POST:Post") } func NewBeegoServer(){ beego.BConfig.Listen.HTTPPort = 8080 beego.BConfig.RunMode = "dev" beego.BConfig.ServerName = "mywebapp" beego.Run() } type HelloController struct { beego.Controller } //Get对应的就是GET请求,也可以明确指定 func (c *HelloController) Get(){ var emp Employee emps:=emp.GetEmployees() jsonemp,err:=json.Marshal(emps) if err != nil { fmt.Printf("marshal employees error : %v",err) } c.Ctx.WriteString(string(jsonemp)) } func (c *HelloController) Post(){ reqdata,err:=ioutil.ReadAll(c.Ctx.Request.Body) if err != nil { fmt.Printf("post request fail : %v\n",err) } fmt.Printf("request data is (%v)",string(reqdata)) c.Ctx.WriteString("hello,"+string(reqdata)) }
以上是不是很方便很时候旧项目改造用
官方文档:
https://beego.me/docs/mvc/controller/config.md
个人文档:
https://bk.poph163.com/2019/05/16/beego%E6%A1%86%E6%9E%B6%E7%94%B1%E6%B5%85%E5%85%A5%E6%B7%B1/
https://www.cnblogs.com/flying1819/articles/8832667.html
https://beego.me/docs/mvc/controller/router.md