Need help with beego?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

astaxie
25.4K Stars 5.0K Forks Other 4.0K Commits 469 Opened issues

Description

beego is an open-source, high-performance web framework for the Go programming language.

Services available

!
?

Need anything else?

Contributors list

Beego Build Status GoDoc Foundation Go Report Card

beego is used for rapid development of RESTful APIs, web apps and backend services in Go. It is inspired by Tornado, Sinatra and Flask. beego has some Go-specific features such as interfaces and struct embedding.

More info at beego.me.

If you could not open this website, go to beedoc

beego 1.x and 2.x

We recently release beego 2.0.0-beta, and its structure change a lot, so you may get some error

  1. If you are working on beego v1.x please try
    go get github.com/astaxie/[email protected]
  2. If you want to try beego 2.0.0, run
    go get github.com/astaxie/[email protected]

We are still working on fix bug and documentation of v2.x. And v2.x's doc will be released with v2.0.0.

Next version

v1.12.4 will be released on Jan 2021 And v2.0.0 will be released next month.

Quick Start

Please see Documentation for more.
beego-example

Web Application

Create
hello
directory, cd
hello
directory

mkdir hello
cd hello

Init module

go mod init

Download and install

go get -u github.com/astaxie/[email protected]

Now we are working on beego v2.0.0, so using

@develop
.

Create file
hello.go

package main

import "github.com/astaxie/beego/server/web"

func main(){ web.Run() }

Build and run

go build hello.go
./hello

Go to http://localhost:8080

Congratulations! You've just built your first beego app.

Using ORM module

package main

import ( "github.com/astaxie/beego/client/orm" "github.com/astaxie/beego/core/logs" _ "github.com/go-sql-driver/mysql" )

// User - type User struct { ID int orm:"column(id)" Name string orm:"column(name)" }

func init() { // need to register models in init orm.RegisterModel(new(User))

// need to register db driver
orm.RegisterDriver("mysql", orm.DRMySQL)

// need to register default database
orm.RegisterDataBase("default", "mysql", "beego:[email protected](192.168.0.105:13306)/orm_test?charset=utf8")

}

func main() { // automatically build table orm.RunSyncdb("default", false, true)

// create orm object, and it will use `default` database
o := orm.NewOrm()

// data
user := new(User)
user.Name = "mike"

// insert data
id, err := o.Insert(user)
if err != nil {
    logs.Info(err)
}

// ...

}

Using httplib as http client

package main

import ( "github.com/astaxie/beego/client/httplib" "github.com/astaxie/beego/core/logs" )

func main() { // Get, more methods please read docs req := httplib.Get("http://beego.me/") str, err := req.String() if err != nil { logs.Error(err) } logs.Info(str) }

Using config module

package main

import ( "context"

"github.com/astaxie/beego/core/config"
"github.com/astaxie/beego/core/logs"

)

var ( ConfigFile = "./app.conf" )

func main() { cfg, err := config.NewConfig("ini", ConfigFile) if err != nil { logs.Critical("An error occurred:", err) panic(err) } res, _ := cfg.String(context.Background(), "name") logs.Info("load config name is", res) }

Using logs module

package main

import ( "github.com/astaxie/beego/core/logs" )

func main() { err := logs.SetLogger(logs.AdapterFile, {"filename":"project.log","level":7,"maxlines":0,"maxsize":0,"daily":true,"maxdays":10,"color":true}) if err != nil { panic(err) } logs.Info("hello beego") }

Using timed task

package main

import ( "context" "time"

"github.com/astaxie/beego/core/logs"
"github.com/astaxie/beego/task"

)

func main() { // create a task tk1 := task.NewTask("tk1", "0/3 * * * * *", func(ctx context.Context) error { logs.Info("tk1"); return nil })

// check task
err := tk1.Run(context.Background())
if err != nil {
    logs.Error(err)
}

// add task to global todolist
task.AddTask("tk1", tk1)

// start tasks
task.StartTask()

// wait 12 second
time.Sleep(12 * time.Second)
defer task.StopTask()

}

Using cache module

package main

import ( "context" "time"

"github.com/astaxie/beego/client/cache"

// don't forget this
_ "github.com/astaxie/beego/client/cache/redis"

"github.com/astaxie/beego/core/logs"

)

func main() { // create cache bm, err := cache.NewCache("redis", {"key":"default", "conn":":6379", "password":"123456", "dbNum":"0"}) if err != nil { logs.Error(err) }

// put
isPut := bm.Put(context.Background(), "astaxie", 1, time.Second*10)
logs.Info(isPut)

isPut = bm.Put(context.Background(), "hello", "world", time.Second*10)
logs.Info(isPut)

// get
result, _ := bm.Get(context.Background(),"astaxie")
logs.Info(string(result.([]byte)))

multiResult, _ := bm.GetMulti(context.Background(), []string{"astaxie", "hello"})
for i := range multiResult {
    logs.Info(string(multiResult[i].([]byte)))
}

// isExist
isExist, _ := bm.IsExist(context.Background(), "astaxie")
logs.Info(isExist)

// delete
isDelete := bm.Delete(context.Background(), "astaxie")
logs.Info(isDelete)

}

Features

  • RESTful support
  • MVC architecture
  • Modularity
  • Auto API documents
  • Annotation router
  • Namespace
  • Powerful development tools
  • Full stack for Web & API

Documentation

Community

License

beego source code is licensed under the Apache Licence, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html).

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.